https://github.com/python/cpython/commit/fa9a4254e81c0abcc3345021c45aaf5f788f9ea9
commit: fa9a4254e81c0abcc3345021c45aaf5f788f9ea9
branch: main
author: Prithviraj Chaudhuri <[email protected]>
committer: gpshead <[email protected]>
date: 2025-12-28T16:57:44Z
summary:
gh-142195: Fixed Popen.communicate indefinite loops (GH-143203)
Changed condition to evaluate if timeout is less than or equals to 0. This is
needed for simulated time environments such as Shadow where the time will match
exactly on the boundary.
---------
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
files:
A Misc/NEWS.d/next/Library/2025-12-27-00-14-56.gh-issue-142195.UgBEo5.rst
M Lib/subprocess.py
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 17333d8c02255d..3cebd7883fcf29 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -2140,7 +2140,7 @@ def _communicate(self, input, endtime, orig_timeout):
while selector.get_map():
timeout = self._remaining_time(endtime)
- if timeout is not None and timeout < 0:
+ if timeout is not None and timeout <= 0:
self._check_timeout(endtime, orig_timeout,
stdout, stderr,
skip_check_and_raise=True)
diff --git
a/Misc/NEWS.d/next/Library/2025-12-27-00-14-56.gh-issue-142195.UgBEo5.rst
b/Misc/NEWS.d/next/Library/2025-12-27-00-14-56.gh-issue-142195.UgBEo5.rst
new file mode 100644
index 00000000000000..b2b1ffe7225bd7
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-12-27-00-14-56.gh-issue-142195.UgBEo5.rst
@@ -0,0 +1 @@
+Updated timeout evaluation logic in :mod:`subprocess` to be compatible with
deterministic environments like Shadow where time moves exactly as requested.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]