This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: CRASH
Type: crash Stage: resolved
Components: Versions: Python 3.10
process
Status: closed Resolution: duplicate
Dependencies: Superseder: Using logging or warnings during Python finalization does crash Python
View: 42208
Assigned To: Nosy List: badamesoham8, vstinner, xtreak
Priority: normal Keywords:

Created on 2020-10-30 16:56 by badamesoham8, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Messages (3)
msg379984 - (view) Author: Soham Badame (badamesoham8) Date: 2020-10-30 16:56
If you apply attached logging.patch, Python crash using attached crash.py:

$ echo|./python -i crash.py
>>>
>>> 
python: Python/_warnings.c:872: setup_context: Assertion `globals != NULL' failed.
Abandon (core dumped)


Attached logging.patch is a fix for bpo-26789: logging.FileHandler keeps a reference to the builtin open() function.

Attached crash.py does crash because of an unclosed file. It happens after PyInterpreterState_Clear(), in finalize_interp_clear():

    /* Last explicit GC collection */
    _PyGC_CollectNoFail();

setup_context() of Python/_warings.c does crash because tstate->interp->sysdict is NULL at this point.

Moreover, _io.TextIOWrapper.__init__() fails to import the locale module (to call locale.getpreferredencoding(), since the encoding is None) and picks the "ascii" encoding.

Moreover, even if I work around all these issues, _warnings.showwarnings() logs "lost sys.stderr" into stderr because, again, tstate->interp->sysdict is NULL at this point (and so sys.stderr no longer exists).

It looks like a bug in finalize_interp_clear() which triggers a garbage collection, whereas Python is no longer usable.

--

The logging module does automatically close files at exit using:

   atexit.register(shutdown)

But crash.py, a new file is opened by a logging handler after logging.shutdown() is called. Maybe another problem is that the logging module does not clear logger handlers, or prevent handlers to log more message, after shutdown() is called.
msg379988 - (view) Author: Karthikeyan Singaravelan (xtreak) * (Python committer) Date: 2020-10-30 17:04
Please attach crash.py and logging.patch files
msg380027 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2020-10-31 00:49
This is a strange copy of my bpo-42208 issue...
History
Date User Action Args
2022-04-11 14:59:37adminsetgithub: 86377
2020-10-31 00:49:24vstinnersetstatus: open -> closed
superseder: Using logging or warnings during Python finalization does crash Python
messages: + msg380027

resolution: duplicate
stage: resolved
2020-10-30 17:04:34xtreaksetnosy: + xtreak, vstinner
messages: + msg379988
2020-10-30 16:56:11badamesoham8create