Helgrind останавливает программу во время выполнения - PullRequest
0 голосов
/ 31 января 2019

Helgrind зависает во время выполнения.CTRL + C (SIGINT) должен быть применен для выхода из run.

Я написал программу, которая выполняется правильно, и valgrind не сообщает о каких-либо программах, если они выполняются обычным образом без использования --tool=helgrind,Но когда используется helgrind, программа останавливается во время выполнения.

Я не обнаружил каких-либо типичных проблем, из-за которых helgrind ведет себя так.Есть какие-нибудь советы?Я не смог найти никаких проблем при использовании vgdb.

РЕДАКТИРОВАТЬ: Программа использует семафоры и pthreads.

РЕДАКТИРОВАТЬ: Добавлениекуча fprintf выводов заставила helgrind работать нормально.Но почему?

1 Ответ

0 голосов
/ 07 февраля 2019

Найден ответ.

Использование значения семафора в качестве условной переменной очень медленное.Так как sem_post / sem_wait являются атомарными операциями, а helgrind выполняет «более медленную проверку» (не атомарную), тогда моя программа обновляет семафоры намного быстрее, чем helgrind повторно проверяет семафор.И таким образом замерзает Helgrind.Таким образом, счетчик потока или другой тип условной переменной устранили проблему.

...