[ https://issues.apache.org/jira/browse/DISPATCH-2130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ken Giusti updated DISPATCH-2130: --------------------------------- Fix Version/s: (was: 1.17.0) 1.18.0 > python lock inversion deadlock > ------------------------------ > > Key: DISPATCH-2130 > URL: https://issues.apache.org/jira/browse/DISPATCH-2130 > Project: Qpid Dispatch > Issue Type: Bug > Components: Router Node > Affects Versions: 1.16.0 > Reporter: Ken Giusti > Assignee: Ken Giusti > Priority: Major > Labels: deadlock, tsan > Fix For: 1.18.0 > > > The python lock is a top-level lock: no other locks should be held when > taking the python lock. > The python lock is held for as long as the thread is running in python. The > python code often calls back into C, which takes locks as necessary (timers, > server lock, whatever). > Debug code should be added to enforce this. > TSAN deadlock trace: > 21: Mutex M253 acquired here while holding mutex M13 in main thread: > 21: #0 pthread_mutex_lock <null> (libtsan.so.0+0x528ac) > <M253 == timer lock == qd_server->lock> > 21: #1 sys_mutex_lock > /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:57 > (libqpid-dispatch.so+0xacee5) > 21: #2 qd_timer_schedule > /home/kgiusti/work/dispatch/qpid-dispatch/src/timer.c:216 > (libqpid-dispatch.so+0x1350fe) > 21: #3 qd_router_setup_late > /home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:2144 > (libqpid-dispatch.so+0x128656) > 21: #4 ffi_call_unix64 <null> (libffi.so.6+0x6aef) > 21: #5 main_process > /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:97 > (qdrouterd+0x402697) > 21: #6 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:369 > (qdrouterd+0x403557) > 21: > 21: Mutex M13 previously acquired by the same thread here: > 21: #0 pthread_mutex_lock <null> (libtsan.so.0+0x528ac) > <M13 == python ilock> > 21: #1 sys_mutex_lock > /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:57 > (libqpid-dispatch.so+0xacee5) > 21: #2 qd_python_lock > /home/kgiusti/work/dispatch/qpid-dispatch/src/python_embedded.c:902 > (libqpid-dispatch.so+0xb070e) > 21: #3 qd_dispatch_load_config > /home/kgiusti/work/dispatch/qpid-dispatch/src/dispatch.c:129 > (libqpid-dispatch.so+0x80ad2) > 21: #4 main_process > /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:97 > (qdrouterd+0x402697) > 21: #5 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:369 > (qdrouterd+0x403557) > > --------------------------- > > 21: Mutex M13 acquired here while holding mutex M253 in thread T4: > 21: #0 pthread_mutex_lock <null> (libtsan.so.0+0x528ac) > <M13 == python ilock> > 21: #1 sys_mutex_lock > /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:57 > (libqpid-dispatch.so+0xacee5) > 21: #2 qd_python_lock > /home/kgiusti/work/dispatch/qpid-dispatch/src/python_embedded.c:902 > (libqpid-dispatch.so+0xb070e) > 21: #3 qd_policy_socket_close > /home/kgiusti/work/dispatch/qpid-dispatch/src/policy.c:296 > (libqpid-dispatch.so+0xa3a8e) > 21: #4 qd_connection_free > /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:925 > (libqpid-dispatch.so+0x12f703) > 21: #5 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1127 > (libqpid-dispatch.so+0x13069e) > 21: #6 _thread_init > /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:172 > (libqpid-dispatch.so+0xad37a) > 21: #7 <null> <null> (libtsan.so.0+0x2d33f) > 21: > 21: Mutex M253 previously acquired by the same thread here: > 21: #0 pthread_mutex_lock <null> (libtsan.so.0+0x528ac) > <M253 == qd_server->lock> > 21: #1 sys_mutex_lock > /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:57 > (libqpid-dispatch.so+0xacee5) > 21: #2 qd_connection_free > /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:920 > (libqpid-dispatch.so+0x12f48f) > 21: #3 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1127 > (libqpid-dispatch.so+0x13069e) > 21: #4 _thread_init > /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:172 > (libqpid-dispatch.so+0xad37a) > 21: #5 <null> <null> (libtsan.so.0+0x2d33f) -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org