From b49858b4b7b4c9d85ef6946ad020f83e4fa1caa7 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 24 May 2019 15:20:23 +0200 Subject: 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(). --- Modules/posixmodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } -- cgit v0.12