GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-120321: Make gi_yieldfrom thread-safe in free-threading build by colesbury · Pull Request #144292 · python/cpython

Conversation

@colesbury

@colesbury colesbury commented Jan 27, 2026 •
edited by bedevere-app Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Add a FRAME_SUSPENDED_YIELD_FROM_LOCKED state that acts as a brief lock, preventing other threads from transitioning the frame state while gen_getyieldfrom reads the yield-from object off the stack.

  • Issue: SIGSEGV with generators in free-threaded build #120321

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@colesbury
pythongh-120321: Make gi_yieldfrom thread-safe in free-threading build
5a3fa20
Add a FRAME_SUSPENDED_YIELD_FROM_LOCKED state that acts as a brief
lock, preventing other threads from transitioning the frame state
while gen_getyieldfrom reads the yield-from object off the stack.
@colesbury colesbury added the topic-free-threading label Jan 27, 2026
@bedevere-app bedevere-app Bot mentioned this pull request Jan 27, 2026
SIGSEGV with generators in free-threaded build #120321
Closed
@colesbury
Fix docs warning
f2e445e
@colesbury
colesbury marked this pull request as ready for review January 28, 2026 16:44
@colesbury
colesbury requested a review from markshannon as a code owner January 28, 2026 16:44
@bedevere-app bedevere-app Bot added the awaiting core review label Jan 28, 2026
@colesbury
colesbury requested a review from mpage January 28, 2026 16:44
mpage
mpage approved these changes Jan 29, 2026
View reviewed changes

@mpage mpage left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I worry a little about the increasing complexity in the state machine. Specifically, that folks might forget to call gen_yield_from_lock_wait() at the beginning of the state transition loop. Would it be worth factoring out the common logic?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-app bedevere-app Bot added awaiting merge and removed awaiting core review labels Jan 29, 2026
@colesbury

colesbury commented Jan 29, 2026

Copy link
Copy Markdown
Contributor Author

Hmmm.. maybe we can handle it in _Py_GEN_TRY_SET_FRAME_STATE

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@colesbury
Move FRAME_SUSPENDED_YIELD_FROM_LOCKED logic into _Py_GEN_TRY_SET_FRA…
455b26b
…ME_STATE
@colesbury
colesbury requested a review from mpage January 29, 2026 21:24
@colesbury

colesbury commented Jan 29, 2026

Copy link
Copy Markdown
Contributor Author

I've move the retry logic into _Py_GEN_TRY_SET_FRAME_STATE. @mpage would you please take a look at the most recent changes?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

mpage
mpage approved these changes Jan 29, 2026
View reviewed changes

@mpage mpage left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@colesbury
colesbury merged commit a01694d into python:main Jan 30, 2026
53 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@colesbury
colesbury deleted the gh-120321-yield-from branch January 30, 2026 17:20
@bedevere-app bedevere-app Bot removed the awaiting merge label Jan 30, 2026
thunder-coding pushed a commit to thunder-coding/cpython that referenced this pull request Feb 15, 2026
@colesbury @thunder-coding
pythongh-120321: Make gi_yieldfrom thread-safe in free-threading build (
f265600
python#144292)

Add a FRAME_SUSPENDED_YIELD_FROM_LOCKED state that acts as a brief
lock, preventing other threads from transitioning the frame state
while gen_getyieldfrom reads the yield-from object off the stack.
@nascheme nascheme mentioned this pull request Jul 14, 2026
Backport free-threading memory-safety fixes to 3.14 and 3.15 #153714
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@mpage mpage mpage approved these changes
@markshannon markshannon Awaiting requested review from markshannon markshannon is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

topic-free-threading

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@colesbury @mpage
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.