Я сейчас расскажу про ошибку, которую мы отлаживали месяц, и она не имеет отношения к языку. Устройство общается по tcp с сервером. Оно отправляет ему сообщение — и ждет подтверждение. Ну я сделал на одном блкирующем сокете.
Заметили что редко, раз в неделю, девайс зависает капитально. Написан код однопоточно асинхронно в основном, то есть если что-то где-то зависло — виснет основная часть функций девайса.
Оказалось, что у сервера есть баг, и он раз в неделю на запрос ничего не отвечает. Не сбрасывает и держит соединение keep-alive, никакого ответа при этом нет