From a13db641998bb15b3641f223958746f6b00b0b4d Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 24 May 2019 10:10:59 +0200 Subject: [PATCH] bpo-37031: Fix PyOS_AfterFork_Child() PyOS_AfterFork_Child(): _PyInterpreterState_DeleteExceptMain() must be called after _PyRuntimeState_ReInitThreads(). _PyRuntimeState_ReInitThreads() resets interpreters mutex after fork, mutex used by _PyInterpreterState_DeleteExceptMain(). --- Modules/posixmodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 8ebe3a0be053501..cd5b5ce082ece42 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); }