STINNER Victor <victor.stin...@haypocalc.com> added the comment:

> The main thread was waiting test_signals() lock (signalled_all) 
> while it is was interrupted by a signal. The signal handler calls
> Py_AddPendingCall() which blocks on acquiring "pending_lock".

Oh, the main thread receives SIGUSR1: the signal handler calls 
Py_AddPendingCall() to process it later. But while calling Py_AddPendingCall(), 
it receives a SIGUSR2: the same signal handler is called, and it calls 
Py_AddPendingCall().

And we have a deadlock because we try to acquire the lock twice, or try to 
acquire the lock before the lock was released.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue11768>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to