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.11] gh-104372: Cleanup _posixsubprocess make_inheritable for async signal safety gh-104518 by gpshead · Pull Request #104785 · python/cpython

Conversation

@gpshead

@gpshead gpshead commented May 23, 2023 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Member

Move all of the Python C API calls into the parent process up front
instead of doing PyLong_AsLong and PyErr_Occurred and PyTuple_GET from
the post-fork/vfork child process.

Much of this was long overdue. We shouldn't have been using PyTuple and
PyLong APIs within all of these low level functions anyways.

This is a backport of c649df6 for #104518 and the tiny adjustment in d1732fe #104697.

  • Issue: subprocess can block all Python threads when using vfork() until the child process exec() succeeds or fails. #104372

Sorry, something went wrong.

Uh oh!

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

All reactions
gpshead added 2 commits May 22, 2023 19:01
@gpshead
pythongh-104372: Cleanup _posixsubprocess make_inheritable for asyn…
de47455
…c signal safety and no GIL requirement (python#104518)

Move all of the Python C API calls into the parent process up front
instead of doing PyLong_AsLong and PyErr_Occurred and PyTuple_GET from
the post-fork/vfork child process.

Much of this was long overdue. We shouldn't have been using PyTuple and
PyLong APIs within all of these low level functions anyways.

(cherry picked from commit c649df6)
@gpshead
[3.11] pythongh-104372: Cleanup _posixsubprocess make_inheritable f…
0991dae
…or async signal safety and no GIL requirement (pythonGH-104518)

Move all of the Python C API calls into the parent process up front
instead of doing PyLong_AsLong and PyErr_Occurred and PyTuple_GET from
the post-fork/vfork child process.

Much of this was long overdue. We shouldn't have been using PyTuple and
PyLong APIs within all of these low level functions anyways..
(cherry picked from commit c649df6)

Co-authored-by: Gregory P. Smith <[email protected]>
@gpshead gpshead self-assigned this May 23, 2023
@bedevere-bot bedevere-bot mentioned this pull request May 23, 2023
subprocess can block all Python threads when using vfork() until the child process exec() succeeds or fails. #104372
Closed
gpshead added 2 commits May 22, 2023 19:08
@gpshead
Don't use Raw malloc & free.
c684290
Backport of d1732fe to 3.11 from python#104697.
@gpshead
Fix the backport for pre-argument-clinic life.
0ecbcba
@gpshead
gpshead marked this pull request as ready for review May 23, 2023 02:22
@bedevere-bot bedevere-bot added the awaiting core review label May 23, 2023
@gpshead
gpshead marked this pull request as draft May 23, 2023 05:59
@bedevere-bot bedevere-bot removed the awaiting core review label May 23, 2023
@gpshead

gpshead commented May 23, 2023 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Member Author

The AddressSanitizer failure is only reproducable under an Ubuntu 20.04 ci-like-toolchain setup in the default optimized build. Using a --with-pydebug build in that setup, it does not happen. Using more recent compiler (& ASAN?) toolchains such as ubuntu 22.04 and 23.04, it does not happen.

regardless, i won't merge until finding a workaround. for CI health purposes alone.

All reactions

Sorry, something went wrong.

Uh oh!

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

@gpshead gpshead mentioned this pull request May 23, 2023
[3.11] gh-103726: Set up gcc-10 for ASAN (gh-103728) #104794
Merged
gpshead added 2 commits May 23, 2023 01:11
@gpshead
Merge branch '3.11' into backport-c649df6-3.11
b0a7c51
@gpshead
cleanup to keep the backport more diff concise.
c058694
@gpshead
gpshead marked this pull request as ready for review May 23, 2023 19:02
@bedevere-bot bedevere-bot added the awaiting core review label May 23, 2023
@gpshead
only check PyErr_Occurred if it returned -1
c364eaa
@gpshead
gpshead merged commit 6d00ae3 into python:3.11 May 24, 2023
@bedevere-bot bedevere-bot removed the awaiting core review label May 24, 2023
@gpshead
gpshead deleted the backport-c649df6-3.11 branch May 24, 2023 03:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

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

Assignees

@gpshead gpshead

Labels

None yet

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

@gpshead @bedevere-bot
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.