mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
Fixes issue #14396: Handle the odd rare case of waitpid returning 0
when not expected in subprocess.Popen.wait().
This commit is contained in:
commit
f328d79223
2 changed files with 10 additions and 3 deletions
|
@ -1509,9 +1509,13 @@ class Popen(object):
|
|||
raise TimeoutExpired(self.args, timeout)
|
||||
delay = min(delay * 2, remaining, .05)
|
||||
time.sleep(delay)
|
||||
elif self.returncode is None:
|
||||
(pid, sts) = self._try_wait(0)
|
||||
self._handle_exitstatus(sts)
|
||||
else:
|
||||
while self.returncode is None:
|
||||
(pid, sts) = self._try_wait(0)
|
||||
# Check the pid and loop as waitpid has been known to return
|
||||
# 0 even without WNOHANG in odd situations. issue14396.
|
||||
if pid == self.pid:
|
||||
self._handle_exitstatus(sts)
|
||||
return self.returncode
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue