2010-12-03 53 views
0

如果致電pthread_cond_signal死鎖,可能是什麼原因?pthread_cond_signal死鎖

根據我的理解(man page),它在內部用一個互斥體實現,但是可能導致這個內部互斥鎖操作發生死鎖?

編輯:我正在調試的應用程序似乎在某些情況下的死鎖。幾個蹤跡的是這樣的:


Thread 1 (Thread 0xf6dff6c0 (LWP 32001)): 
#0 0xffffe410 in __kernel_vsyscall() 
#1 0x00af15de in __lll_mutex_lock_wait() from /lib/tls/libpthread.so.0 
#2 0x00aef3eb in [email protected]@GLIBC_2.3.2() from /lib/tls/libpthread.so.0 
#3 0xf4cc8d83 in xxx 
+0

這是一個假設,還是你真的看到了這種情況? – 2010-12-03 12:08:11

+0

我正在調查Linux應用程序中的實際死鎖情況。 – Krumelur 2010-12-03 12:24:13

回答

2

的一兩件事來尋找可能是從該名男子頁這個警告,這聽起來特別適用:

條件功能不是 異步信號安全,並且不應該從信號處理程序調用 。在 特別是,呼叫 pthread_cond_signalpthread_cond_broadcast從一個信號 處理程序可能死鎖調用 線程。

除此之外,如果pthread_cond_t內的內部互斥已被超出某個其他變量的界限覆蓋,您也可以看到此內容。