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-145202: Fix segfault in unicodedata.iter_graphemes when cleared by GC by gourijain029-del · Pull Request #145203 · python/cpython

Conversation

@gourijain029-del

@gourijain029-del gourijain029-del commented Feb 25, 2026

Copy link
Copy Markdown

This PR fixes a segmentation fault in unicodedata.iter_graphemes and its segment objects, which occurred when the objects were cleared by the garbage collector before being deallocated.

In Modules/unicodedata.c, both GraphemeBreakIterator and SegmentObject have tp_clear implementations that set their string references to NULL. However, their deallocators were using Py_DECREF instead of Py_XDECREF. This led to a crash if a GC cycle (or interpreter shutdown) cleared the objects before they reached the deallocation path.

I've updated GBI_dealloc and Segment_dealloc to use Py_XDECREF to safely handle these NULL references.

Fixes gh-145202.

Sorry, something went wrong.

Uh oh!

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

All reactions
@gourijain029-del
pythongh-145202: Fix segfault in unicodedata.iter_graphemes during GC
a9b583d
@bedevere-app bedevere-app Bot added the awaiting review label Feb 25, 2026
@bedevere-app bedevere-app Bot mentioned this pull request Feb 25, 2026
Segfault from unicodedata.iter_graphemes on a free threaded build #145202
Closed
@StanFromIreland
StanFromIreland requested a review from serhiy-storchaka February 25, 2026 13:30
@serhiy-storchaka

serhiy-storchaka commented Feb 25, 2026

Copy link
Copy Markdown
Member

#145216 is an alternative solution. I do not think we need tp_clear here at first place.

All reactions

Sorry, something went wrong.

Uh oh!

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

@serhiy-storchaka serhiy-storchaka closed this Feb 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@serhiy-storchaka serhiy-storchaka Awaiting requested review from serhiy-storchaka

Uh oh!

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

Assignees

No one assigned

Labels

awaiting review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Segfault from unicodedata.iter_graphemes on a free threaded build

Uh oh!

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

2 participants

@gourijain029-del @serhiy-storchaka
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.