From: Victor Stinner Date: Fri, 24 May 2019 13:20:23 +0000 (+0200) Subject: bpo-37031: Fix PyOS_AfterFork_Child() (GH-13537) X-Git-Tag: v3.8.0b1~228 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7;p=thirdparty%2FPython%2Fcpython.git 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(). --- 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); }