[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[Libevent-users] deadlock in version 2.0.5
The scenario –
Thread B tries to delete an event E for which a callback is executed by thread A. The callback calls event_base_gettimeofday_cached() that acquires th_base_lock:
Thread A (LWP 14625 in the stack/strace below) locks *current_event_lock* before invokoing callback.
Thread B (LWP 14585 in the stack/strace below) locks *th_base_lock* inside method event_del.
Thread B *blocks* on *current_event_lock* inside event_del_internal.
Thread A *blocks* on *th_base_lock* inside event_base_gettimeofday_cached.
(gdb) thread 6
[Switching to thread 6 (Thread 1346476352 (LWP 14625))]#0 0x000000364460c758 in __lll_mutex_lock_wait () from /lib64/libpthread.so.0
(gdb) where
#0 0x000000364460c758 in __lll_mutex_lock_wait () from /lib64/libpthread.so.0
#1 0x00000036446087fa in _L_mutex_lock_908 () from /lib64/libpthread.so.0
#2 0x0000003644608682 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3 0x00002aaab035e989 in event_base_gettimeofday_cached () from /opt/breach/bwd/lib/libevent_core.so.4
#4 0x00002aaaae955017 in CBTcpProxyReceiverThread::SetPxcnTimeStamp (this=0x23fcbb10, side=SIDE_CLIENT, p_pxcn=0x30e0db90)
at receiver_thread.cpp:174
#5 0x00002aaaae955084 in receiver_cb (fd=105, what=34, arg=0x30e0db90) at receiver_thread.cpp:189
#6 0x00002aaab03613c9 in event_base_loop () from /opt/breach/bwd/lib/libevent_core.so.4
#7 0x00002aaaae955638 in CBTcpProxyReceiverThread::run (this=0x23fcbb10) at receiver_thread.cpp:42
#8 0x00002aaaae2f86c2 in JTCThread::entrance_hook (this=0x23fcbb10) at Thread.cpp:1049
#9 0x00002aaaae2faf2f in lsf_thread_adapter (arg=0x23fcbb10) at Thread.cpp:174 #10 0x00000036446061b5 in start_thread () from /lib64/libpthread.so.0
#11 0x0000003643acd36d in clone () from /lib64/libc.so.6
#12 0x0000000000000000 in ?? ()
[root@set8-64bit bwd]# strace -p 14625
Process 14625 attached - interrupt to quit futex(0x23fcc1b0, FUTEX_WAIT, 2, NULL <unfinished ...>
(gdb) thread 18
[Switching to thread 18 (Thread 1220598080 (LWP 14585))]#0 0x000000364460c758 in __lll_mutex_lock_wait () from /lib64/libpthread.so.0
(gdb) where
#0 0x000000364460c758 in __lll_mutex_lock_wait () from /lib64/libpthread.so.0
#1 0x00000036446087fa in _L_mutex_lock_908 () from /lib64/libpthread.so.0
#2 0x0000003644608682 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3 0x00002aaab0362123 in event_del () from /opt/breach/bwd/lib/libevent_core.so.4
#4 0x00002aaaae9577a0 in CBTcpProxy::ShutDownRe (this=0x1cf2eb58, pxcn=@0x30e0db90, side=SIDE_CLIENT) at tcpproxy.cpp:450
#5 0x00002aaaae958834 in CBTcpProxy::ClosePXCN (this=0x1cf2eb58, pxcn=@0x30e0db90, closing_peer=SIDE_CLIENT) at tcpproxy.cpp:378
#6 0x00002aaaaac12546 in CGSnfHandler::ResetSession (this=0x2aaab898abd0) at g_snf_handler.cpp:633
#7 0x00002aaaaac0feef in CGSnfHandler::HandleSession (this=0x2aaab898abd0) at g_snf_handler.cpp:1203
#8 0x00002aaaaac10c6d in CGSnfHandler::OnRun (this=0x2aaab898abd0) at g_snf_handler.cpp:840
#9 0x00002aaaaac6d2f3 in CProtocolHandlerTh::run (this=0x2aaab88f4930) at protocolhandler.cpp:281 #10 0x00002aaaae2f86c2 in JTCThread::entrance_hook (this=0x2aaab88f4930) at Thread.cpp:1049
#11 0x00002aaaae2faf2f in lsf_thread_adapter (arg=0x2aaab88f4930) at Thread.cpp:174
#12 0x00000036446061b5 in start_thread () from /lib64/libpthread.so.0
#13 0x0000003643acd36d in clone () from /lib64/libc.so.6
#14 0x0000000000000000 in ?? ()
[root@set8-64bit]# strace -p 14585
Process 14585 attached - interrupt to quit futex(0x23fcc1e0, FUTEX_WAIT, 2, NULL <unfinished ...>
Avi
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users in the body.