调试futex锁

use*_*811 5 linux locking futex

我有一个等待futex的过程:

# strace -p 5538
Process 5538 attached - interrupt to quit
futex(0x7f86c9ed6a0c, FUTEX_WAIT, 20, NULL
Run Code Online (Sandbox Code Playgroud)

我如何最好地调试这种情况?我可以识别谁持有该futex吗?是否有类似于ipcs和ipcrm的工具,但适用于futexes?

小智 0

我对一段c++代码也有同样的问题。运行 ubuntu 12.10 64 位。看起来像 2007 年的类似问题,当时 libc 有 bug(也许现在仍然如此?)。

我启动一个 pthread,它在系统调用中运行跟踪路由。系统之前和之后的 Printf 指示操作系统挂起系统调用,而不执行跟踪路由。

我不确定我的 linux 是否因为 ubuntu 更新而再次损坏,或者是否是与 libc 相关的错误。由于许多应用程序似乎都有“类似”的问题,我认为它卡在用户空间的某个地方。

我的 C++ 代码可以在 32 位系统甚至 64 位 osx 上完美运行,因此我认为 ubuntu 12.10 + 64 位 libc 组合已损坏。