From: Victor Stinner Date: Wed, 6 May 2020 16:25:06 +0000 (+0200) Subject: bpo-40533: Disable GC in subinterpreters (GH-19961) X-Git-Tag: v3.9.0b1~153 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d8135e913ab7c694db247c86d0a84c450c32d86e;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index 56dcb101e000..a44752b1cc4d 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);