diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-05-24 13:20:23 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-24 13:20:23 (GMT) |
commit | b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7 (patch) | |
tree | 00d448bec735ee1de48c9cf5ab88ea1720d8f4ae | |
parent | b3a9843cd19039808a812ca11206881c94c64e3b (diff) | |
download | cpython-b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7.zip cpython-b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7.tar.gz cpython-b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7.tar.bz2 |
bpo-37031: Fix PyOS_AfterFork_Child() (GH-13537)
PyOS_AfterFork_Child(): _PyInterpreterState_DeleteExceptMain() must
be called after _PyRuntimeState_ReInitThreads().
_PyRuntimeState_ReInitThreads() resets interpreters mutex after fork,
mutex used by _PyInterpreterState_DeleteExceptMain().
-rw-r--r-- | Modules/posixmodule.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 8ebe3a0..cd5b5ce 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -448,11 +448,11 @@ PyOS_AfterFork_Child(void) { _PyRuntimeState *runtime = &_PyRuntime; _PyGILState_Reinit(runtime); - _PyInterpreterState_DeleteExceptMain(runtime); _PyEval_ReInitThreads(runtime); _PyImport_ReInitLock(); _PySignal_AfterFork(); _PyRuntimeState_ReInitThreads(runtime); + _PyInterpreterState_DeleteExceptMain(runtime); run_at_forkers(_PyInterpreterState_Get()->after_forkers_child, 0); } |