summaryrefslogtreecommitdiffstats
path: root/Lib/subprocess.py
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2017-01-23 01:28:38 (GMT)
committerGregory P. Smith <greg@krypto.org>2017-01-23 01:28:38 (GMT)
commit50e16e33af69aca6e908bace793178c8d6ab8272 (patch)
tree3ec26643b5ae7a72690a998628162e252a2e4a76 /Lib/subprocess.py
parent7fe28ad8375677a6d696271d48783d6c38a74dce (diff)
downloadcpython-50e16e33af69aca6e908bace793178c8d6ab8272.zip
cpython-50e16e33af69aca6e908bace793178c8d6ab8272.tar.gz
cpython-50e16e33af69aca6e908bace793178c8d6ab8272.tar.bz2
Issue #29335: Fix subprocess.Popen.wait() when the child process has
exited to a stopped instead of terminated state (ex: when under ptrace).
Diffstat (limited to 'Lib/subprocess.py')
-rw-r--r--Lib/subprocess.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 502e26b..2165524 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -1285,7 +1285,8 @@ class Popen(object):
def _handle_exitstatus(self, sts, _WIFSIGNALED=os.WIFSIGNALED,
_WTERMSIG=os.WTERMSIG, _WIFEXITED=os.WIFEXITED,
- _WEXITSTATUS=os.WEXITSTATUS):
+ _WEXITSTATUS=os.WEXITSTATUS, _WIFSTOPPED=os.WIFSTOPPED,
+ _WSTOPSIG=os.WSTOPSIG):
"""All callers to this function MUST hold self._waitpid_lock."""
# This method is called (indirectly) by __del__, so it cannot
# refer to anything outside of its local scope.
@@ -1293,6 +1294,8 @@ class Popen(object):
self.returncode = -_WTERMSIG(sts)
elif _WIFEXITED(sts):
self.returncode = _WEXITSTATUS(sts)
+ elif _WIFSTOPPED(sts):
+ self.returncode = -_WSTOPSIG(sts)
else:
# Should never happen
raise SubprocessError("Unknown child exit status!")