Код С++ висит даже в GDB

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

Как отладить эту проблему? Это какая-то системная ошибка?

1 ответ

Используя команду strace, было ясно, что зависание связано с проблемой futex_wait_private. Чтение сокета было переведено в тупик. При увеличении значения таймаута выбора - проблема может быть решена.

licensed under cc by-sa 3.0 with attribution.