Helgrind在运行时停止程序

时间:2019-01-31 06:24:32

标签: c pthreads valgrind

Helgrind在运行时冻结。必须使用CTRL + C(SIGINT)退出运行。

我编写了一个程序,该程序可以正确执行,并且如果不使用--tool=helgrind以常规方式运行,则valgrind不会报告任何程序。但是当使用helgrind时,程序将在运行时停止。

我还没有发现任何导致helgrind如此行为的错别字问题。有任何提示吗?使用vgdb也找不到任何问题。

编辑:该程序利用了信号量和pthread。

编辑:添加一堆fprintf输出使helgrind正常工作。为什么呢

1 个答案:

答案 0 :(得分:0)

找到答案。

将信号量的值用作条件变量非常慢。因此,由于sem_post / sem_wait是原子操作,并且helgrind具有“较慢的检查”(非原子),因此我的程序更新信号灯的方式要快得多,然后helgrind重新检查该信号灯。从而冻结了海格。因此,线程计数器或其他类型的条件变量解决了该问题。