From ab80b39f160a07bf7bd18a84c07c7e2acedb7249 Mon Sep 17 00:00:00 2001 From: Nicolas Catania Date: Thu, 4 Jun 2009 09:42:03 -0700 Subject: [PATCH] Fixed valgrind handling issue. Turns out valgrind always exits with error code 0 even when a leak is detected. Instead we are now looking for an empty output. --- testrunner/run_command.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/testrunner/run_command.py b/testrunner/run_command.py index ead80f1bd..8cf385b87 100755 --- a/testrunner/run_command.py +++ b/testrunner/run_command.py @@ -146,10 +146,16 @@ def RunHostCommand(binary, valgrind=False): return subproc.returncode else: # Need the full path to valgrind to avoid other versions on the system. - subproc = subprocess.Popen(["/usr/bin/valgrind", "-q", full_path], + subproc = subprocess.Popen(["/usr/bin/valgrind", "--tool=memcheck", + "--leak-check=yes", "-q", full_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - subproc.wait() - return subproc.returncode + # Cannot rely on the retcode of valgrind. Instead look for an empty output. + valgrind_out = subproc.communicate()[0].strip() + if valgrind_out: + print valgrind_out + return 1 + else: + return 0 def HasValgrind():