Movatterモバイル変換


[0]ホーム

URL:


homepage

Issue32777

This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title:subprocess: child_exec() uses _Py_set_inheritable() which is not async-signal-safe
Type:behaviorStage:commit review
Components:Extension Modules, Library (Lib)Versions:Python 3.7, Python 3.6
process
Status:closedResolution:fixed
Dependencies:Superseder:
Assigned To: gregory.p.smithNosy List: gregory.p.smith, izbyshev, vstinner
Priority:normalKeywords:patch

Created on2018-02-06 01:34 byizbyshev, last changed2022-04-11 14:58 byadmin. This issue is nowclosed.

Pull Requests
URLStatusLinkedEdit
PR 5560mergedizbyshev,2018-02-06 01:44
PR 5562mergedmiss-islington,2018-02-06 06:09
PR 5563mergedmiss-islington,2018-02-06 06:10
Messages (6)
msg311699 -(view)Author: Alexey Izbyshev (izbyshev)*(Python triager)Date: 2018-02-06 01:34
_Py_set_inheritable() raises a Python-level exception on error and thus is  not async-signal-safe, but child_exec() must use only async-signal-safe functions because it's executed between fork() and exec().Since a non-raising version is already implemented inPython/fileutils.c for internal use (set_inheritable), I suggest to simply expose it via another public function (similar to _Py_open_noraise(), etc.).
msg311706 -(view)Author: Gregory P. Smith (gregory.p.smith)*(Python committer)Date: 2018-02-06 06:05
out of curiosity, did you actually diagnose a process deadlocked due to this or was it noted via code inspection?this issue has been around since 3.4 and the file descriptor inheritance changes from the looks of things.
msg311707 -(view)Author: Gregory P. Smith (gregory.p.smith)*(Python committer)Date: 2018-02-06 06:09
New changesetc1e46e94de38a92f98736af9a42d89c3975a9919 by Gregory P. Smith (Alexey Izbyshev) in branch 'master':bpo-32777: Fix _Py_set_inheritable async-safety in subprocess (GH-5560)https://github.com/python/cpython/commit/c1e46e94de38a92f98736af9a42d89c3975a9919
msg311708 -(view)Author: Gregory P. Smith (gregory.p.smith)*(Python committer)Date: 2018-02-06 06:31
New changeset2bb0bfafb0beb819b7c60d9004382ce6867847c0 by Gregory P. Smith (Miss Islington (bot)) in branch '3.7':bpo-32777: Fix _Py_set_inheritable async-safety in subprocess (GH-5560) (GH-5562)https://github.com/python/cpython/commit/2bb0bfafb0beb819b7c60d9004382ce6867847c0
msg311709 -(view)Author: Gregory P. Smith (gregory.p.smith)*(Python committer)Date: 2018-02-06 06:51
New changesetb90c68586e1f2c45c736dd38880f182be267e2ef by Gregory P. Smith (Miss Islington (bot)) in branch '3.6':bpo-32777: Fix _Py_set_inheritable async-safety in subprocess (GH-5560) (GH-5563)https://github.com/python/cpython/commit/b90c68586e1f2c45c736dd38880f182be267e2ef
msg311712 -(view)Author: Alexey Izbyshev (izbyshev)*(Python triager)Date: 2018-02-06 07:25
> out of curiosity, did you actually diagnose a process deadlocked due to this or was it noted via code inspection?The latter. I noted it while working on another issue. While it was easy to trigger a malloc() in child_exec() by e.g. specifying an invalid fd in pass_fds for Popen, I haven't tried to arrange a deadlock.
History
DateUserActionArgs
2022-04-11 14:58:57adminsetgithub: 76958
2018-02-06 07:25:34izbyshevsetmessages: +msg311712
2018-02-06 06:52:35gregory.p.smithsetstatus: open -> closed
resolution: fixed
components: + Extension Modules
stage: patch review -> commit review
2018-02-06 06:51:12gregory.p.smithsetmessages: +msg311709
2018-02-06 06:31:24gregory.p.smithsetmessages: +msg311708
2018-02-06 06:10:43miss-islingtonsetpull_requests: +pull_request5386
2018-02-06 06:09:48miss-islingtonsetpull_requests: +pull_request5385
2018-02-06 06:09:36gregory.p.smithsetmessages: +msg311707
2018-02-06 06:05:20gregory.p.smithsetmessages: +msg311706
2018-02-06 04:47:02gregory.p.smithsetassignee:gregory.p.smith

nosy: +gregory.p.smith
2018-02-06 01:44:45izbyshevsetkeywords: +patch
stage: patch review
pull_requests: +pull_request5382
2018-02-06 01:34:03izbyshevcreate
Supported byThe Python Software Foundation,
Powered byRoundup
Copyright © 1990-2022,Python Software Foundation
Legal Statements

[8]ページ先頭

©2009-2026 Movatter.jp