From d8135e913ab7c694db247c86d0a84c450c32d86e Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 6 May 2020 18:25:06 +0200 Subject: bpo-40533: Disable GC in subinterpreters (GH-19961) When Python is built with experimental isolated interpreters, a garbage collection now does nothing in an isolated interpreter. Temporary workaround until subinterpreters stop sharing Python objects. --- Modules/gcmodule.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index 56dcb10..a44752b 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -1181,6 +1181,14 @@ collect(PyThreadState *tstate, int generation, _PyTime_t t1 = 0; /* initialize to prevent a compiler warning */ GCState *gcstate = &tstate->interp->gc; +#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS + if (tstate->interp->config._isolated_interpreter) { + // bpo-40533: The garbage collector must not be run on parallel on + // Python objects shared by multiple interpreters. + return 0; + } +#endif + if (gcstate->debug & DEBUG_STATS) { PySys_WriteStderr("gc: collecting generation %d...\n", generation); show_stats_each_generations(gcstate); -- cgit v0.12