проблема с памятью

#debugging #memory #process #pthreads #fork

#отладка #память #процесс #pthreads #форк

Вопрос:

У меня очень длинный код с несколькими процессами, и где-то в программе во время ее выполнения я получаю сообщение типа «недопустимый следующий размер (быстрый)» и некоторые цифры, которые не имеют смысла.

Я не могу запустить gdb в этом процессе самостоятельно, и я не могу выяснить, где в программе это происходит. Я помещаю printf s влево и вправо (я также сбрасываю его с помощью fflush , чтобы он печатался точно в это время), но все равно я не могу найти точную строку, когда это происходит!

Как следует отлаживать подобную проблему? Я был бы признателен за помощь, потому что я перепробовал все, что смог придумать.

Ответ №1:

Сначала попытайтесь найти строку с

 grep -rni "invalid next" *.c
  

предполагая, что это все файлы c в некоторых подкаталогах. Затем вы должны увидеть, что означают эти цифры (или исправить сообщение об ошибке, чтобы оно было более значимым). Если у вас нет gnu-grep:

 find -name '*.c' | xargs grep -ni "invalid next"
  

Ответ №2:

Похоже, что у многих людей возникает эта проблема, когда они используют функцию sizeof () для выделения неправильного объема памяти для чего-либо.

Проверьте эти потоки:

http://www.gtkforums.com/viewtopic.php?t=4819

http://www.linuxquestions.org/questions/programming-9/free-invalid-next-size-fast-c-error-729852/