Alan Jenkins added the comment:
Put the other way, if you wanted to fix this bug in ThreadedChildWatcher, and
go as far as allowing cancelling Process.wait(), followed by kill() /
send_signal(), then I think you need -
* siginterrupt(SIGCHLD, 1)
* not to mind about any random C code that doe
Alan Jenkins added the comment:
There's one way to fix this in MultiLoopChildWatcher (but not
ThreadedChildWatcher). Make sure the waitpid() runs on the same thread that
created the subprocess. Prototype:
https://github.com/sourcejedi/cpython/commit/92f979bce4582e807facb1c274a962b3caf0d2eb
New submission from Alan Jenkins :
## Test program ##
import asyncio
import time
import os
import signal
import sys
# This bug happens with the default, ThreadedChildWatcher
# It also happens with MultiLoopChildWatcher,
# but not the other three watcher types.
#asyncio.set_child_watcher(asynci