C ++ код зависает, даже в GDB

0

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

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

  • 0
    Какой была обратная трассировка ( bt ) в GDB после того, как вы отправили сигнал?
  • 0
    возможно блокирование чтения пакетов
Показать ещё 3 комментария
Теги:
valgrind
gdb

1 ответ

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню