Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r63498:7737ba1bb77c
Date: 2013-04-18 18:11 -0700
http://bitbucket.org/pypy/pypy/changeset/7737ba1bb77c/

Log:    apply workaround from default: Don't rely on reference counting to
        close the non-heritable handle. This avoids a deadlock on Windows,
        when stdout=PIPE.

diff --git a/lib-python/3/subprocess.py b/lib-python/3/subprocess.py
--- a/lib-python/3/subprocess.py
+++ b/lib-python/3/subprocess.py
@@ -886,10 +886,14 @@
 
         def _make_inheritable(self, handle):
             """Return a duplicate of handle, which is inheritable"""
-            return _subprocess.DuplicateHandle(_subprocess.GetCurrentProcess(),
+            dupl = _subprocess.DuplicateHandle(_subprocess.GetCurrentProcess(),
                                 handle, _subprocess.GetCurrentProcess(), 0, 1,
                                 _subprocess.DUPLICATE_SAME_ACCESS)
-
+            # If the initial handle was obtained with CreatePipe, close
+            # it
+            if not isinstance(handle, int):
+                handle.Close()
+            return dupl
 
         def _find_w9xpopen(self):
             """Find and return absolut path to w9xpopen.exe"""
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to