mirror of
https://github.com/python/cpython.git
synced 2025-08-27 04:05:34 +00:00
![]() There was a deadlock when `ProcessPoolExecutor` shuts down at the same time that a queueing thread handles an error processing a task. Don't use `_shutdown_lock` to protect the `_ThreadWakeup` pipes -- use an internal lock instead. This fixes the ordering deadlock where the `ExecutorManagerThread` holds the `_shutdown_lock` and joins the queueing thread, while the queueing thread is attempting to acquire the `_shutdown_lock` while closing the `_ThreadWakeup`. |
||
---|---|---|
.. | ||
__init__.py | ||
_base.py | ||
process.py | ||
thread.py |