Merge.
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 50bec29..814cfbe 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -1247,16 +1247,17 @@
os.close(fd)
closed.add(fd)
- # Close all other fds, if asked for
- if close_fds:
- self._close_fds(but=errpipe_write)
-
if cwd is not None:
os.chdir(cwd)
if preexec_fn:
preexec_fn()
+ # Close all other fds, if asked for - after
+ # preexec_fn(), which may open FDs.
+ if close_fds:
+ self._close_fds(but=errpipe_write)
+
if env is None:
os.execvp(executable, args)
else: