# HG changeset patch # User Brendan Cully # Date 2013-07-17 20:42:08 # Node ID a0699972e75aeef0cc4042d954eba663685d543b # Parent b927ccf0f27d72710f0c819a7d2c21c9a432841b 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. diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -59,15 +59,12 @@ import killdaemons as killmod 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 @@ def Popen4(cmd, wd, timeout, env=None): 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