我想知道线程清理程序(clang)的死锁在哪里,但问题是程序被阻塞,并且在使用-fsanitize = thread选项进行编译期间未检测到死锁。并且在执行结束时没有结果,因为该程序被阻塞(由于死锁,无法退出该程序)。
如果程序已经被阻止,则不需要ThreadSanitizer对其进行调试。您可以使用gdb附加到死锁的进程,并使用thread apply all bt查看所有线程的堆栈跟踪。您应该在thread apply all bt输出中看到尝试从不同线程锁定同一互斥锁的尝试。
thread apply all bt