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().
This commit is contained in:
Victor Stinner 2019-05-24 15:20:23 +02:00 committed by GitHub
parent b3a9843cd1
commit b49858b4b7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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);
}