From 65fededf9cc1780d5edbef8a6e0a7cf9bc15aea6 Mon Sep 17 00:00:00 2001 From: Savannah Ostrowski Date: Fri, 12 Jul 2024 01:34:30 -0700 Subject: [PATCH] Update retroactive comments from GH-117741 (segfault in `FutureIter_dealloc`) (GH-121638) Address comments --- Misc/NEWS.d/3.13.0b1.rst | 20 ++++++++++---------- Modules/_asynciomodule.c | 3 --- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Misc/NEWS.d/3.13.0b1.rst b/Misc/NEWS.d/3.13.0b1.rst index 831ba623765..ba3b3dbbc08 100644 --- a/Misc/NEWS.d/3.13.0b1.rst +++ b/Misc/NEWS.d/3.13.0b1.rst @@ -354,16 +354,6 @@ asend().throw() .. -.. date: 2024-04-13-18-59-25 -.. gh-issue: 115874 -.. nonce: c3xG-E -.. section: Core and Builtins - -Fixed a possible segfault during garbage collection of -``_asyncio.FutureIter`` objects - -.. - .. date: 2024-04-13-16-55-53 .. gh-issue: 117536 .. nonce: xkVbfv @@ -883,6 +873,16 @@ Alex Waygood. .. +.. date: 2024-04-13-18-59-25 +.. gh-issue: 115874 +.. nonce: c3xG-E +.. section: Library + +Fixed a possible segfault during garbage collection of +``_asyncio.FutureIter`` objects. Patch by Savannah Ostrowski. + +.. + .. date: 2024-04-13-01-45-15 .. gh-issue: 115060 .. nonce: IxoM03 diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 87ad236cdbb..6938aad90dd 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -1650,7 +1650,6 @@ FutureIter_dealloc(futureiterobject *it) { PyTypeObject *tp = Py_TYPE(it); - // FutureIter is a heap type so any subclass must also be a heap type. assert(_PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE)); PyObject *module = ((PyHeapTypeObject*)tp)->ht_module; @@ -1661,8 +1660,6 @@ FutureIter_dealloc(futureiterobject *it) // GH-115874: We can't use PyType_GetModuleByDef here as the type might have // already been cleared, which is also why we must check if ht_module != NULL. - // Due to this restriction, subclasses that belong to a different module - // will not be able to use the free list. if (module && _PyModule_GetDef(module) == &_asynciomodule) { state = get_asyncio_state(module); }