https://github.com/python/cpython/commit/8a09b511a0cccc39973135b405ca0eea01c73f67
commit: 8a09b511a0cccc39973135b405ca0eea01c73f67
branch: 3.13
author: Stan Ulbrych <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-01-12T20:07:34+02:00
summary:

[3.13] gh-141536: Fix a crash when running test_capi *after* test_code in the 
same process (GH-141537) (GH-143625)

(cherry picked from commit b2827de18fe88152dc38c1aa76c39b69ef59cb6f)

Co-authored-by: T. Wouters <[email protected]>

files:
M Lib/test/test_code.py

diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py
index 6f300a252dad45..6ea6c486de5339 100644
--- a/Lib/test/test_code.py
+++ b/Lib/test/test_code.py
@@ -143,7 +143,7 @@
                           check_impl_detail, requires_debug_ranges,
                           gc_collect, Py_GIL_DISABLED,
                           suppress_immortalization,
-                          skip_if_suppress_immortalization)
+                          skip_if_suppress_immortalization, 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
@@ -844,6 +844,11 @@ def myfree(ptr):
 
     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):

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to