-
-
Notifications
You must be signed in to change notification settings - Fork 33.7k
Open
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)topic-free-threadingtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
Description
Crash report
What happened?
Trying to iterate on a generator from multiple threads under the free-threaded build results in a segmentation fault.
Here is a minimal repro:
import concurrent.futures
def gen():
while True:
yield
it = gen()
with concurrent.futures.ThreadPoolExecutor() as executor:
while True:
_ = executor.submit(lambda: next(it))The issue seems to be specific to generators as other kinds of iterators work well in parallel.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Output from running 'python -VV' on the command line:
Python 3.14.0a0 experimental free-threading build (heads/main:c3b6dbff2c, Jun 10 2024, 16:54:16) [GCC 11.4.0]
Linked PRs
- gh-120321: Lock gen_send #120327
- gh-120321: Make gi_frame_state transitions atomic in FT build #142599
- gh-120321: Fix TSan reported race in gen_clear_frame #142995
- gh-120321: Avoid
-Wunreachable-codewarning on Clang #143022 - gh-120321: Make gen.gi_frame.clear() thread-safe #143112
- gh-120321: Fix TSan reported races on gi_frame_state #143128
szalpal
Metadata
Metadata
Assignees
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)topic-free-threadingtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump