gh-141536: Fix a crash when running test_capi *after* test_code in the same process (#141537)

This commit is contained in:
T. Wouters 2026-01-07 16:40:33 +01:00 committed by GitHub
parent b3e4a3462f
commit b2827de18f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -210,7 +210,7 @@ except ImportError:
ctypes = None
from test.support import (cpython_only,
check_impl_detail, requires_debug_ranges,
gc_collect, Py_GIL_DISABLED)
gc_collect, Py_GIL_DISABLED, late_deletion)
from test.support.script_helper import assert_python_ok
from test.support import threading_helper, import_helper
from test.support.bytecode_helper import instructions_with_positions
@ -1555,6 +1555,11 @@ if check_impl_detail(cpython=True) and ctypes is not None:
FREE_FUNC = freefunc(myfree)
FREE_INDEX = RequestCodeExtraIndex(FREE_FUNC)
# Make sure myfree sticks around at least as long as the interpreter,
# since we (currently) can't unregister the function and leaving a
# dangling pointer will cause a crash on deallocation of code objects if
# something else uses co_extras, like test_capi.test_misc.
late_deletion(myfree)
class CoExtra(unittest.TestCase):
def get_func(self):