2013-06-20 69 views
4

我等待一個futex的一個過程:調試一個futex的鎖定

# strace -p 5538 
Process 5538 attached - interrupt to quit 
futex(0x7f86c9ed6a0c, FUTEX_WAIT, 20, NULL 

如何最調試這樣的情況?我可以識別誰擁有futex?有沒有類似於ipcs和ipcrm的工具,但用於futexes?

回答

0

我有一個C++代碼相同的問題。運行Ubuntu 12.10 64bit。它在2007年看起來像一個類似的問題,其中libc是越野車(可能還是?)。

我開始在系統調用中運行traceroute的pthread。 printf在系統前後顯示,操作系統掛起在系統調用中,不執行traceroute。

我不確定我的linux是否因爲ubuntu更新而再次損壞,或者它是否與libc相關的錯誤。由於很多應用程序似乎都有「相似」的問題,我認爲它被卡在用戶空間的某個地方。

我的C++代碼在32位系統甚至64位osx上運行完美,所以我認爲ubuntu 12.10 + 64位libc組合已損壞。

1

嘗試使用gdb -p *PID*,然後運行wherebt以查看回溯。

對於已刪除調試符號的二進制文件和庫,它不會非常有用,但是您可能能夠從上下文中推導出合理的位。它可能能夠指示覆雜進程掛起的哪一部分,然後您可以檢查源的正確部分以搜索該鎖。