Mercurial > hg
changeset 19415:a0699972e75a
run-tests: replace popen locking with a noop _cleanup handler on py24
This also avoids the race condition, and isn't detrimental to job scheduling.
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Wed, 17 Jul 2013 13:42:08 -0700 |
parents | b927ccf0f27d |
children | 7ac8eea2f890 |
files | tests/run-tests.py |
diffstat | 1 files changed, 5 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/run-tests.py Wed Jul 17 13:02:12 2013 -0700 +++ b/tests/run-tests.py Wed Jul 17 13:42:08 2013 -0700 @@ -59,15 +59,12 @@ import Queue as queue processlock = threading.Lock() -waitlock = threading.Lock() -def waitlocked(fn): - def run(): - waitlock.acquire() - ret = fn() - waitlock.release() - return ret - return run +# subprocess._cleanup can race with any Popen.wait or Popen.poll on py24 +# http://bugs.python.org/issue1731717 for details. We shouldn't be producing +# zombies but it's pretty harmless even if we do. +if sys.version_info[1] < 5: + subprocess._cleanup = lambda: None closefds = os.name == 'posix' def Popen4(cmd, wd, timeout, env=None): @@ -76,9 +73,6 @@ close_fds=closefds, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - if sys.version_info[1] < 5: - p.wait = waitlocked(p.wait) - p.poll = waitlocked(p.poll) processlock.release() p.fromchild = p.stdout