未检测到 ThreadSanitizer 死锁并且最后没有结果(由于死锁程序)

ThreadSanitizer deadlock not detected and no result at the end (du to the deadlocked program)

我想知道线程清理器 (clang) 的死锁在哪里,但问题是程序被阻塞,并且在使用 -fsanitize=thread 选项进行编译期间未检测到死锁。并且在执行结束时没有结果,因为程序被阻塞(由于死锁无法退出程序)。

如果程序已经被阻止,您不需要 ThreadSanitizer 来调试它。您可以使用 gdb 附加到死锁进程,并使用 thread apply all bt 查看所有线程堆栈跟踪。您应该会在 thread apply all bt 输出中看到从不同线程锁定相同互斥体的尝试。