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

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

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

编辑:该程序是利用信号量和pthreads。

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

最佳答案

找到了答案。

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

关于c - Helgrind在运行时停止程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54454543/

10-10 07:55