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 — [3.13] gh-130163: Fix crashes related to PySys_GetObject() (GH-130503) by serhiy-storchaka · Pull Request #130556 · python/cpython

Conversation

@serhiy-storchaka

@serhiy-storchaka serhiy-storchaka commented Feb 25, 2025 •
edited by bedevere-app Bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Member

The use of PySys_GetObject() and _PySys_GetAttr(), which return a borrowed reference, has been replaced by using one of the following functions, which return a strong reference and distinguish a missing attribute from an error: _PySys_GetOptionalAttr(), _PySys_GetOptionalAttrString(), _PySys_GetRequiredAttr(), and _PySys_GetRequiredAttrString(). (cherry picked from commit 0ef4ffe)

  • Issue: Crash when concurrently writing with print and concurrently modifying sys.stdout #130163

Sorry, something went wrong.

Uh oh!

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

All reactions
@serhiy-storchaka
[3.13] pythongh-130163: Fix crashes related to PySys_GetObject() (pyt…
1e4b133
…honGH-130503)

The use of PySys_GetObject() and _PySys_GetAttr(), which return a borrowed
reference, has been replaced by using one of the following functions, which
return a strong reference and distinguish a missing attribute from an error:
_PySys_GetOptionalAttr(), _PySys_GetOptionalAttrString(),
_PySys_GetRequiredAttr(), and _PySys_GetRequiredAttrString().
(cherry picked from commit 0ef4ffe)

Co-authored-by: Serhiy Storchaka <[email protected]>
@serhiy-storchaka
serhiy-storchaka requested review from ericsnowcurrently, iritkatriel, kumaraditya303 and markshannon as code owners February 25, 2025 22:02
@bedevere-app bedevere-app Bot added topic-free-threading type-crash A hard crash of the interpreter, possibly with a core dump labels Feb 25, 2025
@bedevere-app bedevere-app Bot mentioned this pull request Feb 25, 2025
gh-130163: Fix possible crashes related to PySys_GetObject() #130503
Merged
@bedevere-app bedevere-app Bot added the awaiting core review label Feb 25, 2025
@bedevere-app bedevere-app Bot mentioned this pull request Feb 25, 2025
Crash when concurrently writing with print and concurrently modifying sys.stdout #130163
Closed
@serhiy-storchaka serhiy-storchaka added needs backport to 3.12 only security fixes and removed awaiting core review labels Feb 25, 2025
@serhiy-storchaka
serhiy-storchaka enabled auto-merge (squash) February 25, 2025 22:02
@serhiy-storchaka
Restore _PySys_GetAttr().
2d895cb
@serhiy-storchaka
serhiy-storchaka merged commit 7c1b76f into python:3.13 Feb 25, 2025
@miss-islington-app

miss-islington-app Bot commented Feb 25, 2025

Copy link
Copy Markdown

Thanks @serhiy-storchaka for the PR 🌮🎉.. I'm working now to backport this PR to: 3.12.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

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

@miss-islington-app

miss-islington-app Bot commented Feb 25, 2025

Copy link
Copy Markdown

Sorry, @serhiy-storchaka, I could not cleanly backport this to 3.12 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 7c1b76fce8c8df00da38830f72dbdde6881a33be 3.12
All reactions

Sorry, something went wrong.

Uh oh!

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

@miss-islington-app miss-islington-app Bot assigned serhiy-storchaka Feb 25, 2025
@vstinner

vstinner commented Feb 26, 2025

Copy link
Copy Markdown
Member

This change introduced reference leaks in the 3.13 branch. Example:

$ ./python -m test test_genericalias -R 3:3
(...)
test_genericalias leaked [108, 108, 108] references, sum=324
(...)

cc @encukou

All reactions

Sorry, something went wrong.

Uh oh!

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

@vstinner

vstinner commented Feb 26, 2025

Copy link
Copy Markdown
Member

Example of buildbot failure, Fedora Stable (x86): https://buildbot.python.org/#/builders/1471/builds/551

Failed tests:

  • test_genericalias
  • test_ast
  • test_pickletools
  • test_typing
All reactions

Sorry, something went wrong.

Uh oh!

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

@serhiy-storchaka
serhiy-storchaka deleted the backport-0ef4ffe-3.13 branch February 26, 2025 10:09
@serhiy-storchaka

serhiy-storchaka commented Feb 26, 2025

Copy link
Copy Markdown
Member Author

Indeed, there is a leak in _pickle.c caused by mistake in backporting. Should be fixed by #130568. Thank you @vstinner for noticing.

All reactions

Sorry, something went wrong.

Uh oh!

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

serhiy-storchaka added a commit to serhiy-storchaka/cpython that referenced this pull request Feb 26, 2025
@serhiy-storchaka
[3.12] pythongh-130163: Fix crashes related to PySys_GetObject() (pyt…
4cf5fc4
…honGH-130503) (pythonGH-130556)

The use of PySys_GetObject() and _PySys_GetAttr(), which return a borrowed
reference, has been replaced by using one of the following functions, which
return a strong reference and distinguish a missing attribute from an error:
_PySys_GetOptionalAttr(), _PySys_GetOptionalAttrString(),
_PySys_GetRequiredAttr(), and _PySys_GetRequiredAttrString().
(cherry picked from commit 0ef4ffe)
(cherry picked from commit 7c1b76f)

Co-authored-by: Serhiy Storchaka <[email protected]>
@bedevere-app

bedevere-app Bot commented Feb 26, 2025

Copy link
Copy Markdown

GH-130576 is a backport of this pull request to the 3.12 branch.

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-app bedevere-app Bot removed the needs backport to 3.12 only security fixes label Feb 26, 2025
serhiy-storchaka added a commit that referenced this pull request Feb 26, 2025
@serhiy-storchaka
[3.12] gh-130163: Fix crashes related to PySys_GetObject() (GH-130503) (
89a79fc
GH-130556) (GH-130576)

The use of PySys_GetObject() and _PySys_GetAttr(), which return a borrowed
reference, has been replaced by using one of the following functions, which
return a strong reference and distinguish a missing attribute from an error:
_PySys_GetOptionalAttr(), _PySys_GetOptionalAttrString(),
_PySys_GetRequiredAttr(), and _PySys_GetRequiredAttrString().

(cherry picked from commit 0ef4ffe)
(cherry picked from commit 7c1b76f)
(cherry picked from commit 2ab7e11)
@serhiy-storchaka serhiy-storchaka removed their assignment Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ericsnowcurrently ericsnowcurrently Awaiting requested review from ericsnowcurrently ericsnowcurrently is a code owner
@kumaraditya303 kumaraditya303 Awaiting requested review from kumaraditya303 kumaraditya303 is a code owner
@iritkatriel iritkatriel Awaiting requested review from iritkatriel iritkatriel is a code owner
@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 type-crash A hard crash of the interpreter, possibly with a core dump

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

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