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-151475: Fix data race in faulthandler watchdog on free-threaded builds by timurmamedov1 · Pull Request #152123 · python/cpython

Conversation

@timurmamedov1

@timurmamedov1 timurmamedov1 commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

dump_traceback_later() and cancel_dump_traceback_later() mutate the watchdog state in _PyRuntime.faulthandler.thread without synchronization. On free-threaded builds, concurrent calls corrupt the cancel_event/running lock handshake, since two threads can both allocate cancel_event (leaking one lock), or release a lock they don't hold, causing a fatal abort.

Fix by adding a PyMutex to _faulthandler_runtime_state and acquiring it in both dump_traceback_later and cancel_dump_traceback_later entry points. The mutex is acquired after argument validation (which may call into Python) but before any shared state access.

These are not hot paths and none run in signal-handler context, so a simple mutex is sufficient.

  • Issue: faulthandler: data races in enable()/disable() and dump_traceback_later() under free threading #151475

Sorry, something went wrong.

Uh oh!

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

All reactions
Copilot AI review requested due to automatic review settings June 24, 2026 19:57
Copilot AI reviewed Jun 24, 2026

Copilot AI left a comment

Copy link
Copy Markdown

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sorry, something went wrong.

Uh oh!

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

All reactions
@bedevere-app bedevere-app Bot mentioned this pull request Jun 24, 2026
faulthandler: data races in enable()/disable() and dump_traceback_later() under free threading #151475
Open
@bedevere-app bedevere-app Bot added the awaiting review label Jun 24, 2026
@timurmamedov1
pythongh-151475: Fix data race in faulthandler watchdog on free-threa…
5014d9f
…ded builds

Add a PyMutex to serialize dump_traceback_later() and
cancel_dump_traceback_later() calls.  Without this, concurrent
arm/cancel from multiple threads corrupts the cancel_event/running
lock handshake, causing an abort from unlocking an unheld lock.
@timurmamedov1
timurmamedov1 force-pushed the gh-151475-fix-faulthandler-thread-safety branch from 1923738 to 5014d9f Compare June 24, 2026 20:00
@github-actions

github-actions Bot commented Sep 23, 2026

Copy link
Copy Markdown

This PR is stale because it has been open for 90 days with no activity.

All reactions

Sorry, something went wrong.

Uh oh!

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

@github-actions github-actions Bot added the stale Stale PR or inactive for long period of time. label Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments

Uh oh!

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

Assignees

No one assigned

Labels

awaiting review stale Stale PR or inactive for long period of time.

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

@timurmamedov1
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 01402520 — 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.