[3.13] gh-122695: Fix double-free when using gc.get_referents with a freed _asyncio.FutureIter (#122837)

* Backport #122834 for 3.13
This commit is contained in:
Peter Bierma 2024-08-09 14:06:36 +00:00 committed by GitHub
parent 60c44ed975
commit e8fb088dba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 11 deletions

View file

@ -675,6 +675,14 @@ class CFutureTests(BaseFutureTests, test_utils.TestCase):
with self.assertRaises(AttributeError):
del fut._log_traceback
def test_future_iter_get_referents_segfault(self):
# See https://github.com/python/cpython/issues/122695
import _asyncio
it = iter(self._new_future(loop=self.loop))
del it
evil = gc.get_referents(_asyncio)
gc.collect()
@unittest.skipUnless(hasattr(futures, '_CFuture'),
'requires the C _asyncio module')