Skip to content

Can not communicate with subprocess during interpreter shutdown on windows#115219

@tacaswell

Description

@tacaswell

Bug report

Bug description:

In #104826 (backported to 3.12 in #105277) to fix #104690 disallowed creating new threads during interpreter finalization. This poses a problem on windows because the Popen._communicate uses a thread (see matplotlib/matplotlib#27437 (comment) for discussion).

In Matplotlib we are holding onto a latex process and triggering this via a weakref finalize, but a minimal reproducer is:

fromsubprocessimportPopen, PIPEimportatexit# anything that holds stdin and stdout should workproc=Popen(['powershell'], stdin=PIPE, stdout=PIPE) defcleanup(): print('hi bob') proc.kill() proc.communicate() atexit.register(cleanup)

xref matplotlib/matplotlib#27437

CPython versions tested on:

3.12

Operating systems tested on:

Windows

Metadata

Metadata

Assignees

Labels

3.12only security fixes3.13bugs and security fixesOS-windowstype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions