https://github.com/python/cpython/commit/7ce737ea11919aebf7eef174f910759e74d0ea50
commit: 7ce737ea11919aebf7eef174f910759e74d0ea50
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-04-18T12:11:14Z
summary:
gh-148653: Fix reference leaks in test_marshal introduced in gh-148698
(GH-148725)
files:
M Lib/test/test_marshal.py
diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py
index 9ec37d27dfa39f..9c4d91c456dc5d 100644
--- a/Lib/test/test_marshal.py
+++ b/Lib/test/test_marshal.py
@@ -357,6 +357,9 @@ def f():
code = f.__code__
a = []
code = code.replace(co_consts=code.co_consts + (a,))
+ # This test creates a reference loop which leads to reference leaks,
+ # so we need to break the loop manually. See gh-148722.
+ self.addCleanup(a.clear)
a.append(code)
for v in range(marshal.version + 1):
self.assertRaises(ValueError, marshal.dumps, code, v)
@@ -410,10 +413,12 @@ def test_loads_abnormal_reference_loops(self):
self.assertIs(a[0][None], a)
# Direct self-reference which cannot be created in Python.
- data = b'\xa8\x01\x00\x00\x00r\x00\x00\x00\x00' # (<R>,)
- a = marshal.loads(data)
- self.assertIsInstance(a, tuple)
- self.assertIs(a[0], a)
+ # This creates a reference loop which cannot be collected.
+ if False:
+ data = b'\xa8\x01\x00\x00\x00r\x00\x00\x00\x00' # (<R>,)
+ a = marshal.loads(data)
+ self.assertIsInstance(a, tuple)
+ self.assertIs(a[0], a)
# Direct self-references which cannot be created in Python
# because of unhashability.
_______________________________________________
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]