classification
Title: posix_spawn explicit file_actions=None throws error
Type: Stage: resolved
Components: Library (Lib) Versions: Python 3.8
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: anthonypjshaw Nosy List: Matthew Tanous, anthonypjshaw, nanjekyejoannah, vstinner
Priority: normal Keywords: patch

Created on 2019-05-06 15:05 by Matthew Tanous, last changed 2019-05-10 02:01 by vstinner. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 13144 merged anthonypjshaw, 2019-05-06 23:10
Messages (7)
msg341522 - (view) Author: Matthew Tanous (Matthew Tanous) Date: 2019-05-06 15:05
Allowing posix_spawn file_actions to default to None works, but explicitly setting it throws a TypeError:

Python 3.8.0a3 (v3.8.0a3:9a448855b5, Mar 25 2019, 17:05:20)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> os.posix_spawnp('whoami', ['whoami'], os.environ, file_actions=None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: file_actions must be a sequence or None

This required me to default to an empty sequence to complete it:

>>> os.posix_spawnp('whoami', ['whoami'], os.environ, file_actions=[])
6308
msg341659 - (view) Author: anthony shaw (anthonypjshaw) * (Python triager) Date: 2019-05-06 22:58
Verified on master
Python 3.8.0a3+ (heads/bpo-28367:373c7aa098, May  6 2019, 17:34:39) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> os.posix_spawnp('whoami', ['whoami'], os.environ, file_actions=None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined
>>> import os
>>> os.posix_spawnp('whoami', ['whoami'], os.environ, file_actions=None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: file_actions must be a sequence or None
msg341661 - (view) Author: anthony shaw (anthonypjshaw) * (Python triager) Date: 2019-05-06 23:07
Issue is in parse_file_actions

parse_file_actions(PyObject *file_actions,
                   posix_spawn_file_actions_t *file_actionsp,
                   PyObject *temp_buffer)
{
    PyObject *seq;
    PyObject *file_action = NULL;
    PyObject *tag_obj;

    seq = v(file_actions,
                          "file_actions must be a sequence or None");
    if (seq == NULL) {
        return -1;
    }

PySequence_Fast will raise a TypeError if PyObject_GetIter fails.
msg341663 - (view) Author: anthony shaw (anthonypjshaw) * (Python triager) Date: 2019-05-06 23:10
Raised a fix in GH-13144
msg341664 - (view) Author: anthony shaw (anthonypjshaw) * (Python triager) Date: 2019-05-06 23:14
After patch:

Python 3.8.0a3+ (heads/31968-dirty:c664b342a4, May  6 2019, 18:06:21) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.posix_spawnp('whoami', ['whoami'], os.environ, file_actions=None)
17300
>>> anthonyshaw
msg342036 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2019-05-10 02:00
New changeset 948ed8c96b6912541a608591efe3e00fb520429a by Victor Stinner (Anthony Shaw) in branch 'master':
bpo-36814: ensure os.posix_spawn() handles None (GH-13144)
https://github.com/python/cpython/commit/948ed8c96b6912541a608591efe3e00fb520429a
msg342038 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2019-05-10 02:01
Matthew Tanous: Oops, I completely missed this case! Thanks for the bug report.

Thanks Anthony Shaw for the fix.
History
Date User Action Args
2019-05-10 02:01:01vstinnersetstatus: open -> closed
resolution: fixed
messages: + msg342038

stage: resolved
2019-05-10 02:00:10vstinnersetnosy: + vstinner
messages: + msg342036
2019-05-09 23:29:44nanjekyejoannahsetnosy: + nanjekyejoannah
2019-05-06 23:14:02anthonypjshawsetmessages: + msg341664
2019-05-06 23:10:51anthonypjshawsetmessages: + msg341663
stage: patch review -> (no value)
2019-05-06 23:10:19anthonypjshawsetkeywords: + patch
stage: patch review
pull_requests: + pull_request13057
2019-05-06 23:07:06anthonypjshawsetassignee: anthonypjshaw
messages: + msg341661
2019-05-06 22:58:56anthonypjshawsetnosy: + anthonypjshaw
messages: + msg341659
2019-05-06 15:05:56Matthew Tanouscreate