From 4dac776ee59a6a0de740e59ecee89ce99d3fc5a5 Mon Sep 17 00:00:00 2001 From: neonene <53406459+neonene@users.noreply.github.com> Date: Mon, 26 May 2025 12:51:37 +0900 Subject: [PATCH] Disable immortalization around Py_CompileString*() --- Python/crossinterp.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Python/crossinterp.c b/Python/crossinterp.c index 26eecdddf4bdd0..13d91c508c41fa 100644 --- a/Python/crossinterp.c +++ b/Python/crossinterp.c @@ -908,8 +908,15 @@ get_script_xidata(PyThreadState *tstate, PyObject *obj, int pure, } goto error; } +#ifdef Py_GIL_DISABLED + // Don't immortalize code constants to avoid memory leaks. + ((_PyThreadStateImpl *)tstate)->suppress_co_const_immortalization++; +#endif code = Py_CompileStringExFlags( script, filename, Py_file_input, &cf, optimize); +#ifdef Py_GIL_DISABLED + ((_PyThreadStateImpl *)tstate)->suppress_co_const_immortalization--; +#endif Py_XDECREF(ref); if (code == NULL) { goto error;