William Fisher added the comment:
In the conversion to PY_CHECK_FUNC, there's a mistake in HAVE_EPOLL.
Python 3.10.1 defines HAVE_EPOLL by checking for the `epoll_create` function.
Python 3.11.0a3 checks for the `epoll` function instead. There is no epoll()
function so this always
William Fisher added the comment:
asyncio.MultiLoopChildWatcher has two problems that create a race condition.
1. The SIGCHLD signal handler does not guard against interruption/re-entry.
2. The SIGCHLD signal handler can interrupt add_child_handler's
`self._do_waitpid(pid)`.
Symptoms:
William Fisher added the comment:
Thanks, I will comment on bpo-38323 directly.
--
resolution: -> duplicate
stage: -> resolved
status: open -> closed
___
Python tracker
<https://bugs.python.or
New submission from William Fisher :
Summary: asyncio.MultiLoopChildWatcher has two problems that create a race
condition.
1. The SIGCHLD signal handler does not guard against interruption/re-entry.
2. The SIGCHLD signal handler can interrupt add_child_handler's
`self._do_waitpi
New submission from William Fisher :
I have a reproducible case where stdin.wait_closed() is hanging on
Windows. This happens in response to a BrokenPipeError. The same code
works fine on Linux and MacOS.
Please see the attached code for the demo.
I believe the hang is related to this debug
New submission from William Fisher :
asyncio.gather uses a dictionary to de-duplicate futures and coros. However,
this can lead to problems when
you pass an awaitable object (implements __await__ but isn't a future or coro).
1. Two or more awaitables may compare for equality/hash, but