Skip to content

Destructing _datetime in sub-interpreters in the same time may crash the process #136423

Description

@aisk

Crash report

What happened?

fromconcurrent.futuresimportInterpreterPoolExecutorexecutor=InterpreterPoolExecutor()
deff():
import_datetimeprint(_datetime)
executor.submit(f)
executor.submit(f)
executor.shutdown()

This code may lead to a interpreter crash:

PS C:\Users\xxxxx\Source\cpython> .\python.bat .\a.py
Running Debug|x64 interpreter...
<module '_datetime' (built-in)>
<module '_datetime' (built-in)>
Debug memory block at address p=000002340D505A70: API '?
15987178197214944733 bytes originally requested
The 7 pad bytes at p-7 are not all FORBIDDENBYTE (0xfd):
at p-7: 0xdd *** OUCH
at p-6: 0xdd *** OUCH
at p-5: 0xdd *** OUCH
at p-4: 0xdd *** OUCH
at p-3: 0xdd *** OUCH
at p-2: 0xdd *** OUCH
at p-1: 0xdd *** OUCH
Because memory is corrupted at the start, the count of bytes requested
may be bogus, and checking the trailing pad bytes may segfault.
The 8 pad bytes at tail=DDDDE011EB2E384D are

I think there is a double free here.

Please note that there is a similar issue may crash the interpreter but in the initializing phase: #136421

CPython versions tested on:

CPython main branch

Operating systems tested on:

macOS, Windows

Output from running 'python -VV' on the command line:

Python 3.15.0a0 (heads/main:ba9c1986305, Jul 8 2025, 22:13:18) [MSC v.1943 64 bit (AMD64)]

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status
    Done
    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions