[issue39360] python3.8 regression - ThreadPool join via __del__ hangs forever
Arkadiusz Miśkiewicz
report at bugs.python.org
Mon Mar 16 06:43:15 EDT 2020
Arkadiusz Miśkiewicz <arekm at maven.pl> added the comment:
This one is also needed on 3.8 to get it not hang with 1) test case.
So 3.8 branch + 9ad58acbe8b90b4d0f2d2e139e38bb5aa32b7fb6 + 4d96b4635aeff1b8ad41d41422ce808ce0b971c8 is working for me.
commit 4d96b4635aeff1b8ad41d41422ce808ce0b971c8
Author: Victor Stinner <vstinner at python.org>
Date: Sat Feb 1 02:30:25 2020 +0100
bpo-39511: PyThreadState_Clear() calls on_delete (GH-18296)
PyThreadState.on_delete is a callback used to notify Python when a
thread completes. _thread._set_sentinel() function creates a lock
which is released when the thread completes. It sets on_delete
callback to the internal release_sentinel() function. This lock is
known as Threading._tstate_lock in the threading module.
The release_sentinel() function uses the Python C API. The problem is
that on_delete is called late in the Python finalization, when the C
API is no longer fully working.
The PyThreadState_Clear() function now calls the
PyThreadState.on_delete callback. Previously, that happened in
PyThreadState_Delete().
The release_sentinel() function is now called when the C API is still
fully working.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue39360>
_______________________________________
More information about the Python-bugs-list
mailing list