mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-134557: Suppress immortalization in _PyCode_GetScriptXIData under free-threading (gh-134686)
Disable immortalization around Py_CompileString*(). The same approach as332356b
that fixed the refleaks in compile() and eval(). E:09e72cf
can pass test_capi, test_sys and test__interpchannels with this patch for me.
This commit is contained in:
parent
b8a885ce63
commit
c60f39ada6
1 changed files with 7 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue