pylifecycle.c: Multiple init/fini cleanup bugs
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
Parent: https://github.com/python/cpython/issues/146102
https://gist.github.com/devdanzin/b022ff2d1304a4b2b8d3d8750abd8da5
pylifecycle.c: Multiple init/fini cleanup bugs
Summary
5 bugs in interpreter lifecycle:
- new_interpreter (line 2534):
return statusbypasses switch-back aftersave_tstatedetach → thread state corruption. - pycore_init_builtins (line 860): Direct
returnleaksbimodref. - add_main_module (line 2762):
bimod/loaderrefs leaked onPyDict_SetItemStringfailure. - finalize_clear_modules_dict (line 1685): Return value of
PyObject_CallMethodNoArgsnever DECREF'd. - init_sys_streams (line 3019-3031): Unchecked
PySys_SetObjectfor stdin/stdout (stderr correctly checked).
CPython versions tested on:
CPython main branch, 3.15
Operating systems tested on:
No response
Linked PRs
- gh-149631
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem übergeordneten Issue und dem verlinkten Gist und untersuche dann pylifecycle.c bei new_interpreter, pycore_init_builtins, add_main_module, finalize_clear_modules_dict und init_sys_streams. Überprüfe jeden gemeldeten Fehlerpfad und nutze den verlinkten PR gh-149631 für den vorhandenen Kontext. Erledigt ist die Aufgabe, wenn alle fünf Probleme bei der Lifecycle-Bereinigung behoben sind, ohne neue Referenz- oder Thread-State-Probleme einzuführen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100