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

Reply via email to