mirror of https://github.com/python/cpython
bpo-40089: Fix threading._after_fork() (GH-19191)
If fork was not called by a thread spawned by threading.Thread, threading._after_fork() now creates a _MainThread instance for _main_thread, instead of a _DummyThread instance.
This commit is contained in:
parent
5a58c5280b
commit
d8ff44ce4c
|
@ -1423,7 +1423,15 @@ def _after_fork():
|
|||
|
||||
# fork() only copied the current thread; clear references to others.
|
||||
new_active = {}
|
||||
current = current_thread()
|
||||
|
||||
try:
|
||||
current = _active[get_ident()]
|
||||
except KeyError:
|
||||
# fork() was called in a thread which was not spawned
|
||||
# by threading.Thread. For example, a thread spawned
|
||||
# by thread.start_new_thread().
|
||||
current = _MainThread()
|
||||
|
||||
_main_thread = current
|
||||
|
||||
# reset _shutdown() locks: threads re-register their _tstate_lock below
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Fix threading._after_fork(): if fork was not called by a thread spawned by
|
||||
threading.Thread, threading._after_fork() now creates a _MainThread instance
|
||||
for _main_thread, instead of a _DummyThread instance.
|
Loading…
Reference in New Issue