8000 gh-125842: Fix `sys.exit(0xffff_ffff)` on Windows by colesbury · Pull Request #125896 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

gh 8000 -125842: Fix sys.exit(0xffff_ffff) on Windows #125896

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Oct 24, 2024

Conversation

colesbury
Copy link
Contributor
@colesbury colesbury commented Oct 23, 2024

On Windows, long is a signed 32-bit integer so it can't represent 0xffff_ffff without overflow. Windows exit codes are unsigned 32-bit integers, so if a child process exits with -1, it will be represented as 0xffff_ffff.

Also fix a number of other possible cases where _Py_HandleSystemExit could return with an exception set, leading to a SystemError (or fatal error in debug builds) later on during shutdown.

On Windows, `long` is a signed 32-bit integer so it can't represent
0xffff_ffff without overflow. Windows exit codes are unsigned 32-bit
integers, so if a child process exits with `-1`, it will be represented
as 0xffff_ffff.

Also fix a number of other possible cases where `_Py_HandleSystemExit`
could return with an exception set, leading to a `SystemError` (or
fatal error in debug builds) later on during shutdown.
colesbury and others added 2 commits October 23, 2024 16:11
Co-authored-by: Nice Zombies <nineteendo19d0@gmail.com>
@colesbury colesbury added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Oct 23, 2024
@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @colesbury for commit 8864fef 🤖

If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Oct 23, 2024
@colesbury colesbury marked this pull request as ready for review October 23, 2024 21:59
@colesbury colesbury requested a review from Yhg1s October 23, 2024 22:00
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
@colesbury colesbury merged commit ad6110a into python:main Oct 24, 2024
40 checks passed
@colesbury colesbury deleted the gh-125842-sys-exit branch October 24, 2024 16:03
@miss-islington-app
Copy link

Thanks @colesbury for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Oct 24, 2024
)

On Windows, `long` is a signed 32-bit integer so it can't represent
`0xffff_ffff` without overflow. Windows exit codes are unsigned 32-bit
integers, so if a child process exits with `-1`, it will be represented
as `0xffff_ffff`.

Also fix a number of other possible cases where `_Py_HandleSystemExit`
could return with an exception set, leading to a `SystemError` (or
fatal error in debug builds) later on during shutdown.
(cherry picked from commit ad6110a)

Co-authored-by: Sam Gross <colesbury@gmail.com>
@bedevere-app
Copy link
bedevere-app bot commented Oct 24, 2024

GH-125925 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label Oct 24, 2024
colesbury added a commit that referenced this pull request Oct 24, 2024
…H-125925)

On Windows, `long` is a signed 32-bit integer so it can't represent
`0xffff_ffff` without overflow. Windows exit codes are unsigned 32-bit
integers, so if a child process exits with `-1`, it will be represented
as `0xffff_ffff`.

Also fix a number of other possible cases where `_Py_HandleSystemExit`
could return with an exception set, leading to a `SystemError` (or
fatal error in debug builds) later on during shutdown.
(cherry picked from commit ad6110a)

Co-authored-by: Sam Gross <colesbury@gmail.com>
ebonnal pushed a commit to ebonnal/cpython that referenced this pull request Jan 12, 2025
On Windows, `long` is a signed 32-bit integer so it can't represent
`0xffff_ffff` without overflow. Windows exit codes are unsigned 32-bit
integers, so if a child process exits with `-1`, it will be represented
as `0xffff_ffff`.

Also fix a number of other possible cases where `_Py_HandleSystemExit`
could return with an exception set, leading to a `SystemError` (or
fatal error in debug builds) later on during shutdown.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants
0