2010-12-03 23 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内的内部互斥已被超出某个其他变量的界限覆盖,您也可以看到此内容。