STINNER Victor <vstin...@python.org> added the comment:
> Please backport to 3.8, then it will become part of 3.8.3rc1 which I'll be > releasing tomorrow. I propose to *not* fix this bug in Python 3.8: * Python 3.8 stdlib doesn't seem to be impacted by this bug * The number of third party C extension modules impated by this bug is very low or even zero * The bug severity is minor *in practice* * A backport can cause a C extension to crash * The implementation may still change before Python 3.9.0 final release -- The worst thing which can happen with this bug is that a C extension module creates many types and these types are never deleted. Well, it's annoying, but it's unlikely to happen. Usually, types are created exactly once in C extensions. -- I'm not 100% comfortable with backporting the fix. Python 3.8.0, 3.8.1 and 3.8.2 have been released with the bug, and this issue is the first report. But I only saw the bug because many C extension modules of the Python 3.9 stdlib were converted to PyModuleDef_Init() and PyType_FromSpec(). -- I'm not comfortable to change the GC behavior in a subtle way in a 3.8.x minor release. If a C extension module was impacted by this bug and decided to explicitly visit the type in its traverse function, this fix will crash the C extension crash... -- At April 23, Serhiy proposed an alternative fix. But then he didn't propose a PR. -- The bug only impacts C extension modules which use PyModuleDef_Init() and PyType_FromSpec(). Python 3.8 only uses PyModuleDef_Init() in the following modules: vstinner@apu$ grep -l PyModuleDef_Init Modules/*.c Modules/arraymodule.c Modules/atexitmodule.c Modules/binascii.c Modules/_testmultiphase.c Modules/xxlimited.c Modules/xxmodule.c Modules/xxsubtype.c Python 3.8 only uses PyType_FromSpec() in the following modules: $ grep -l PyType_FromSpec Modules/*.c Modules/_curses_panel.c Modules/_ssl.c Modules/_testcapimodule.c Modules/_testmultiphase.c Modules/_tkinter.c Modules/xxlimited.c Intersection of the two sets: _testmultiphase and xxlimited, which are modules only used by the Python test suite. It means that Python 3.8 standard library is *not* impacted by this bug. Only third party C extension modules which use PyModuleDef_Init() *and* PyType_FromSpec() are impacted. Most C extension modules use statically allocated types and so are not impacted. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue40217> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com