C++ код с около 5k строк зависает случайным образом - в linux. Мой код имеет дело с передачей и получением пакетов через RAW-сокет. Код просто останавливается в точке произвольно без какого-либо ответа - даже [ctrl + c] оказывается удобным :: каждый раз после зависания я использовал для уничтожения процесса. Я попробовал GDB, и результат был таким же, как и повесили - ctrl + c произвело сообщение об ошибке SIGTERM. При использовании valgrind код висит аналогичным образом.
Как отладить эту проблему? Это какая-то системная ошибка?
Используя команду strace, было ясно, что зависание связано с проблемой futex_wait_private. Чтение сокета было переведено в тупик. При увеличении значения таймаута выбора - проблема может быть решена.
bt
) в GDB после того, как вы отправили сигнал?