[issue30038] Race condition in how trip_signal writes to wakeup fd

STINNER Victor report at bugs.python.org
Tue Apr 11 06:39:41 EDT 2017


STINNER Victor added the comment:

Previous changes in signal handling. It's the commit c13ef66649985025382c64f6af8e3b956411e05b of the issue #8407 which changed the order: <add_pending, write into wakeup fd> became <write into wakeup fd, add_pending>.

I really *hate* having to think to these evil things which are signals and threads... Signals and threads don't go well altogether :-p It reminds me the "Ghosts of Unix past, part 3: Unfixable designs" article...
https://lwn.net/Articles/414618/

commit 6c9b35bfe2585af08ea6480294e096e2d2397fe3
Author: Victor Stinner <victor.stinner at haypocalc.com>
Date:   Mon Apr 18 16:25:56 2011 +0200

    Issue #11768: The signal handler of the signal module only calls
    Py_AddPendingCall() for the first signal to fix a deadlock on reentrant or
    parallel calls. PyErr_SetInterrupt() writes also into the wake up file.

commit c13ef66649985025382c64f6af8e3b956411e05b
Author: Victor Stinner <victor.stinner at haypocalc.com>
Date:   Wed May 25 02:35:58 2011 +0200

    Issue #8407: Fix the signal handler of the signal module: if it is called
    twice, it now writes the number of the second signal into the wakeup fd.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue30038>
_______________________________________


More information about the Python-bugs-list mailing list