Helgrind在运行时冻结。必须使用CTRL + C(SIGINT
)退出运行。
我编写了一个程序,该程序可以正确执行,并且如果不使用--tool=helgrind
以常规方式运行,则valgrind不会报告任何程序。但是当使用helgrind时,程序将在运行时停止。
我还没有发现任何导致helgrind如此行为的错别字问题。有任何提示吗?使用vgdb
也找不到任何问题。
编辑:该程序利用了信号量和pthread。
编辑:添加一堆fprintf
输出使helgrind正常工作。为什么呢
答案 0 :(得分:0)
找到答案。
将信号量的值用作条件变量非常慢。因此,由于sem_post / sem_wait是原子操作,并且helgrind具有“较慢的检查”(非原子),因此我的程序更新信号灯的方式要快得多,然后helgrind重新检查该信号灯。从而冻结了海格。因此,线程计数器或其他类型的条件变量解决了该问题。