Repository navigation
SIGSEGV with generators in free-threaded build #120321
Description
Activity
- addedtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
on Jun 10, 2024 Thanks for the repro. Looking into this.
Confirmed, with pydebug and tsan.
May I take a chance to dive into this issue?
@Zheaoli sorry I assigned myself on this one I have a fix already and will put it up shortly. Do you have any specific issues in mind you would like to work on? I could help mentor/guide you on stuff you're interested in if I can help!
sorry I assigned myself on this one I have a fix already and will put it up shortly
No problem!
Do you have any specific issues in mind you would like to work on? I could help mentor/guide you on stuff you're interested in if I can help!
For now, I'm a fresh man try to be more familiar with the CPython codebase.
I'm now working on #104280 to make dtrace more functional to help debug the process. I'm also interested in JIT and Tier2(especially to enhance the observerability for the Python process). But I'm still trying to find the issue I can fix and the thing I can do(lol
Thanks for knowing that you will be willing to mentor/guide me lol!
@Zheaoli please send me an email I'll help give some pointers privately
- added a commit that references this issue
on Mar 13, 2025 fusil has hit this one during fuzzing, it results in different segfaults and an abort, here's the MRE I got:
from threading import Thread gen = (x for x in range(1_000_000)) def run_gen(): for n in gen: pass [Thread(target=run_gen, args=()).start() for x in range(20)]
Reacted by Mikhail Efimov- marked Generator already executing free-threaded crashes #135325 as a duplicate of this issue
on Jun 10, 2025 37 remaining items
- added 4 commits that reference this issue
on Feb 15, 2026 This fails with asserts on current 3.14:
Assertion failed: frame == &entry.frame, file X:\Work\cpython\3.14\Python\generated_cases.c.h, line 7694And works well on current main.
Should we close this now since it's not planned for backport?
Reopening for async generators which are still not thread safe.
- added a commit that references this issue
on Aug 19, 2026 - added 3 commits that reference this issue
on Aug 19, 2026
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:
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
-Wunreachable-codewarning on Clang #143022