Skip to content

Crash when using typing and daemon threads#116514

@nineteendo

Description

@nineteendo

Crash report

What happened?

When I run this code on Python 3.11 it runs fine, but if I import typing_minimal (or typing) in reader.py I get this error:

Fatal Python error: _enter_buffered_busy: could not acquire lock for <_io.BufferedReader name='<stdin>'> at interpreter shutdown, possibly due to daemon threads Python runtime state: finalizing (tstate=0x00007fff13ab6960) Current thread 0x00003944 (most recent call first): <no Python frame> 

main.py:

importreaderfromtyping_minimalimportGeneric, TypeVarVALUE=TypeVar("VALUE") classBaseClass(Generic[VALUE]): def__init__(self): passclassSubClass(BaseClass[VALUE]): passreader.thread.start()

reader.py:

fromsysimportstdinfromthreadingimportThread# BUG: I get an error when I assign this:# typing_minimal = __import__("typing_minimal")thread=Thread(target=lambda: stdin.buffer.read(), daemon=True)

typing_minimal.py:

fromfunctoolsimportlru_cache, wrapsdef_tp_cache(func): cached=lru_cache()(func) @wraps(func)definner(*args, **kwds): returncached(*args, **kwds) returninnerclassTypeVar: def__init__(self, _): passclass_GenericAlias: def__init__(self, origin): self.origin=origindef__eq__(self, other): ifisinstance(other, _GenericAlias): returnself.originisother.originreturnNotImplementeddef__hash__(self): returnhash(self.origin) def__mro_entries__(self, _): return (self.origin,) classGeneric: @_tp_cachedef__class_getitem__(cls, *_): return_GenericAlias(cls)

I don't understand how this is even possible.

CPython versions tested on:

3.11

Operating systems tested on:

macOS, Windows

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic-typingtype-crashA hard crash of the interpreter, possibly with a core dump

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions