[Python-checkins] bpo-37031: Fix PyOS_AfterFork_Child() (GH-13537)

Victor Stinner webhook-mailer at python.org
Fri May 24 09:20:28 EDT 2019


https://github.com/python/cpython/commit/b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7
commit: b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2019-05-24T15:20:23+02:00
summary:

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().

files:
M Modules/posixmodule.c

diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 8ebe3a0be053..cd5b5ce082ec 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);
 }



More information about the Python-checkins mailing list