Commit Graph

122 Commits

Author SHA1 Message Date
Gregory P. Smith 5e8e371364 bpo-27448: Work around a gc.disable race condition in subprocess. (#1932)
* bpo-27448: Work around a gc.disable race condition in subprocess.

This works around a gc.isenabled/gc.disable race condition in the 2.7
subprocess module by using a lock for the critical section.  It'll
prevent multiple simultaneous subprocess launches from winding up with
gc remaining disabled but it can't fix the ultimate problem: gc enable
and disable is a global setting and a hack.

Users are *strongly encouraged* to use subprocess32 from PyPI instead
of the 2.7 standard library subprocess module.  Mixing threads with
subprocess is a recipie for disaster otherwise even with "fixes" to
ameliorate common issues like this.

* Add a blurb!
2017-09-05 11:20:02 -07:00
Victor Stinner e5bdad2201 bpo-30418: Popen.communicate() always ignore EINVAL (#2002) (#2006)
On Windows, subprocess.Popen.communicate() now also ignore EINVAL
on stdin.write() if the child process is still running but closed the
pipe.
(cherry picked from commit d52aa31378)
2017-06-08 18:34:30 +02:00
Gregory P. Smith f0739cbfe7 Issue #29335: Fix subprocess.Popen.wait() when the child process has
exited to a stopped instead of terminated state (ex: when under ptrace).
2017-01-22 22:38:28 -08:00
Serhiy Storchaka 994f04dbf5 Issue #28998: More APIs now support longs as well as ints. 2016-12-27 15:09:36 +02:00
Martin Panter 5e5af961b8 Issue #26240: Clean up the subprocess module doc string
Patch by Tim Mitchell.
2016-10-26 00:44:31 +00:00
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D) 253c0bff9a issue26083: Avoid duplicate error message string from a subprocess exec failure.Avoid a duplicate error message string from a subprocess exec failure.
:P
2016-05-28 19:24:14 +00:00
Martin Panter 1edccfa60a Issue #22274: Redirect stderr=STDOUT when stdout not redirected, by Akira Li 2016-05-13 01:54:44 +00:00
Gregory P. Smith 0d207fd8cf Fixes issue #26083: Workaround a subprocess bug that raised an incorrect
"ValueError: insecure string pickle" exception instead of the actual exception
on some platforms such as Mac OS X when an exception raised in the forked child
process prior to the exec() was large enough that it overflowed the internal
errpipe_read pipe buffer.
2016-01-11 13:56:42 -08:00
Gregory P. Smith 64fa45af5a Fixes issue #20954: _args_from_interpreter_flags used by multiprocessing
and some tests no longer behaves incorrectly in the presence of the
PYTHONHASHSEED environment variable.
2015-12-13 13:57:50 -08:00
Victor Stinner c382807559 Issue #19612: subprocess.communicate() now also ignores EINVAL when using at
least two pipes.
2014-07-29 00:04:54 +02:00
Benjamin Peterson 944996ff20 remove unnecessary word (closes #19060)
Patch by Anastasia Filatova.
2014-03-12 21:41:35 -05:00
Serhiy Storchaka 306158541c issue12085: Use more Pythonic way to check _child_created.
_active shouldn't be cached, it set to None on shutdown.
2014-02-10 19:19:53 +02:00
Antoine Pitrou 33fc744ea3 Issue #18851: Avoid a double close of subprocess pipes when the child process fails starting. 2013-08-30 23:38:13 +02:00
Charles-François Natali 4c53314475 Issue #18763: subprocess: The file descriptors are now closed after calling the
preexec_fn callback, which may open file descriptors.
2013-08-25 18:22:49 +02:00
Ezio Melotti f5469cff1f #18705: fix a number of typos. Patch by Févry Thibault. 2013-08-17 15:43:51 +03:00
Ned Deily c94f07de77 Issue #18186: remove obsolete 2.2 compatibility comment. 2013-06-11 15:00:21 -07:00
Kristján Valur Jónsson 8927e8f421 Issue #12098: multiprocessing on Windows now starts child processes
using the same sys.flags as the current process.
Backport from default branch.
2013-03-19 15:07:35 -07:00
Andrew Svetlov 332562f447 Keep ref to ECHILD in local scope (#16650) 2012-12-24 20:09:27 +02:00
Gregory P. Smith 211248b214 Fix issue #16140 bug that the fix to issue #16327 added - don't double
close subprocess.PIPE file descriptors when the child encounters an
error prior to exec.
2012-11-11 02:00:49 -08:00
Gregory P. Smith 9d3b6e9822 Fixes issue #16327: The subprocess module no longer leaks file descriptors
used for stdin/stdout/stderr pipes to the child when fork() fails.
2012-11-10 22:49:03 -08:00
Gregory P. Smith f2705aebb0 Fixes issue #14396: Handle the odd rare case of waitpid returning 0
when not expected in subprocess.Popen.wait().
2012-11-10 21:13:20 -08:00
Gregory P. Smith 0798cbc1df Issue #15756: subprocess.poll() now properly handles errno.ECHILD to
return a returncode of 0 when the child has already exited or cannot
be waited on.
2012-09-29 12:02:48 -07:00
Antoine Pitrou f60845b70a Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under Windows when the child process has already exited. 2012-03-11 19:29:12 +01:00
Charles-François Natali 2a34eb3104 Issue #12786: Set communication pipes used by subprocess.Popen CLOEXEC to avoid
them being inherited by other subprocesses.
2011-08-25 21:20:54 +02:00
Charles-François Natali b02302c5cf Issue #12650: Fix a race condition where a subprocess.Popen could leak
resources (FD/zombie) when killed at the wrong time.
2011-08-18 17:18:28 +02:00
Ross Lagerwall d8e3901478 Issue #12607: In subprocess, fix issue where if stdin, stdout or stderr is
given as a low fd, it gets overwritten.
2011-07-27 18:54:53 +02:00
Victor Stinner e790131dc6 Issue #12493: subprocess: communicate() handles EINTR
subprocess.Popen.communicate() now also handles EINTR errors if the process has
only one pipe.
2011-07-05 14:08:01 +02:00
Victor Stinner 776e69b5b3 Close #12085: Fix an attribute error in subprocess.Popen destructor if the
constructor has failed, e.g. because of an undeclared keyword argument. Patch
written by Oleg Oshmyan.
2011-06-01 01:03:00 +02:00
Brian Curtin 20de4586e6 whitespace fix 2011-04-29 16:28:52 -05:00
Brian Curtin 77b75910b7 merge 2011-04-29 16:21:51 -05:00
Ross Lagerwall 104c3f1020 Issue #10963: Ensure that subprocess.communicate() never raises EPIPE. 2011-04-05 15:24:34 +02:00
Ezio Melotti c2077b0d9b #11565: Fix several typos. Patch by Piotr Kasprzyk. 2011-03-16 12:34:31 +02:00
Antoine Pitrou 91ce0d933c Merged revisions 87695 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87695 | antoine.pitrou | 2011-01-03 19:23:55 +0100 (lun., 03 janv. 2011) | 5 lines

  Issue #10806, issue #9905: Fix subprocess pipes when some of the standard
  file descriptors (0, 1, 2) are closed in the parent process.  Initial
  patch by Ross Lagerwall.
........
2011-01-03 18:45:09 +00:00
Gregory P. Smith 312efbc115 Merged revisions 87233 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87233 | gregory.p.smith | 2010-12-14 06:38:00 -0800 (Tue, 14 Dec 2010) | 4 lines

  Issue #1731717: Fixed the problem where subprocess.wait() could cause an
  OSError exception when The OS had been told to ignore SIGCLD in our process
  or otherwise not wait for exiting child processes.
........
2010-12-14 15:02:53 +00:00
Brian Curtin e80513c207 Merged revisions 84582 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r84582 | brian.curtin | 2010-09-07 08:24:38 -0500 (Tue, 07 Sep 2010) | 3 lines

  Adjust #8956 to add the bad signal number to the exception message.
........
2010-09-07 13:27:20 +00:00
Brian Curtin 9a0cb6a8d0 Merged revisions 84559 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r84559 | brian.curtin | 2010-09-06 11:29:29 -0500 (Mon, 06 Sep 2010) | 6 lines

  Fix #8956. ValueError message was only mentioning one signal.

  Rather than list out the three signals (or more over time), the message was
  made less specific but still descriptive.
........
2010-09-06 16:31:27 +00:00
Tim Golden 8e4756c763 #2304: fix incorporating Eric Smith's .format suggestion and tested on Ubuntu as well as Windows 2010-08-12 11:00:35 +00:00
Benjamin Peterson 718f222372 revert 83832; unix test breakage 2010-08-08 19:14:28 +00:00
Tim Golden 6fe8c41e8f Issue #2304: Add additional quotes when using cmd shell on Windows. Original patch from Gabriel Genellina 2010-08-08 16:18:45 +00:00
Tim Golden 431774f32a Issue #3210: Revert C module changes and apply patch from Hirokazu Yamamoto instead 2010-08-08 11:17:56 +00:00
Stefan Krah e9a6a7dd4c Issue #9265: Incorrect name passed as arg[0] when shell=True
and executable specified.
2010-07-19 14:41:08 +00:00
Jean-Paul Calderone b33f0c1ccd Revert r60115
This revision introduced quoting for strings containing | based
on a misunderstanding of the commonly used quoting rules used
on Windows.

| is interpreted by cmd.exe, not by the MS C runtime argv initializer.
It only needs to be quoted if it is part of an argument passed through
cmd.exe.

See issue1300, issue7839, and issue8972.
2010-06-18 20:00:17 +00:00
Victor Stinner 2b271f7e30 Fix regression introduced by r81154 (Issue #5099, subprocess destructor) 2010-05-14 21:52:26 +00:00
Brett Cannon 42a0ba7b2c subprocess.Popen.__del__ referenced global objects, which is a no-no thanks to
interpreter shutdown semantics. Same issue goes for the methods that __del__
called. Now all the methods capture the global objects it needs as default
values to private parameters (could have stuck them on the class object itself,
but since the objects have nothing directly to do with the class that seemed
wrong).

There is no test as making one that works is hard. This patch was
verified against a consistently failing test in Mercurial's test suite, though,
so it has been tested in some regard.

Closes issue #5099. Thanks to Mary Stern for the bug report and Gabriel
Genellina for writing another patch for the same issue and attempting to write
a test.
2010-05-14 00:21:48 +00:00
Brett Cannon 3d6137962c Revert an accidental commit from r80492. 2010-04-25 23:11:51 +00:00
Brett Cannon 1994969c15 When DeprecationWarning was silenced by default, it also silenced any use of -Q
by default as well. This change fixes that by treating -Q like -3 when it comes
to DeprecationWarning; using it causes the silencing to not occur.

Fixes issue #7319.
2010-04-25 22:33:36 +00:00
Brian Curtin a2936cfa09 Fix #7838. Add docstrings and privatize _subprocess implementation details.
Since CREATE_NEW_* are used for the creation flags of a subprocess, they
were added to __all__. The rest of the previously exposed attributes are
now qualified by _subprocess.ATTR rather than importing *.
2010-04-24 15:40:11 +00:00
Brian Curtin e5aa886b44 Implement #1220212. Add os.kill support for Windows.
os.kill takes one of two newly added signals, CTRL_C_EVENT and
CTRL_BREAK_EVENT, or any integer value. The events are a special case
which work with subprocess console applications which implement a
special console control handler. Any other value but those two will
cause os.kill to use TerminateProcess, outright killing the process.

This change adds win_console_handler.py, which is a script to implement
SetConsoleCtrlHandler and applicable handler function, using ctypes.

subprocess also gets another attribute which is a necessary flag to
creationflags in Popen in order to send the CTRL events.
2010-04-02 23:26:06 +00:00
Florent Xicluna cf741ceb69 Fix syntax: "rc != None" -> "rc is not None" 2010-03-08 10:58:12 +00:00
Gregory P. Smith cce211f88c Issue #1068268: The subprocess module now handles EINTR in internal
os.waitpid and os.read system calls where appropriate.
2010-03-01 00:05:08 +00:00