From ca9af16aa72d5249a25ce0b31dd1ac72039cf850 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 28 Jan 2009 21:53:48 +0000 Subject: [PATCH] Fix bogus valgrind memory leak warnings in test suite --- ChangeLog | 9 ++++++++- tests/.valgrind.supp | 15 +++++++++++++++ tests/testutils.c | 24 +++++++++++++++++------- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec381eca20..ef17590f06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,11 @@ -Wed Jan 28 21:33:11 GMT 2009 Daniel P.Berrange + + Fix bogus valgrind memory leak warnings + * tests/testutils.c: Clear global error upon exit + * tests/.valgrind.supp: Ignore memory from thread local + error storage + +Wed Jan 28 21:33:11 GMT 2009 Daniel P.Berrange Fix RPC portability to Solaris * configure.in: s/RPCGEN/HAVE_RPCGEN/ for automake diff --git a/tests/.valgrind.supp b/tests/.valgrind.supp index 9a466d75ba..3188efe735 100644 --- a/tests/.valgrind.supp +++ b/tests/.valgrind.supp @@ -238,3 +238,18 @@ fun:virtTestRun fun:mymain } +{ + ignoreThreadLocalErrorObject + Memcheck:Leak + fun:calloc + fun:virAlloc + fun:virLastErrorObject + fun:virRaiseError + fun:statsErrorFunc + fun:xenLinuxDomainDeviceID + fun:testDeviceHelper + fun:virtTestRun + fun:mymain + fun:virtTestMain + fun:main +} diff --git a/tests/testutils.c b/tests/testutils.c index 7c6ae61b1c..e8b07fc609 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -26,6 +26,8 @@ #include "internal.h" #include "memory.h" #include "util.h" +#include "threads.h" +#include "virterror_internal.h" #if TEST_OOM_TRACE #include @@ -319,8 +321,8 @@ int virtTestMain(int argc, int (*func)(int, char **)) { char *debugStr; -#if TEST_OOM int ret; +#if TEST_OOM int approxAlloc = 0; int n; char *oomStr = NULL; @@ -330,6 +332,10 @@ int virtTestMain(int argc, int worker = 0; #endif + if (virThreadInitialize() < 0 || + virErrorInitialize() < 0) + return 1; + if ((debugStr = getenv("VIR_TEST_DEBUG")) != NULL) { if (virStrToLong_ui(debugStr, NULL, 10, &testDebug) < 0) testDebug = 0; @@ -349,8 +355,10 @@ int virtTestMain(int argc, if (getenv("VIR_TEST_MP") != NULL) { mp = sysconf(_SC_NPROCESSORS_ONLN); fprintf(stderr, "Using %d worker processes\n", mp); - if (VIR_ALLOC_N(workers, mp) < 0) - return EXIT_FAILURE; + if (VIR_ALLOC_N(workers, mp) < 0) { + ret = EXIT_FAILURE; + goto cleanup; + } } if (testOOM) @@ -359,7 +367,7 @@ int virtTestMain(int argc, /* Run once to count allocs, and ensure it passes :-) */ ret = (func)(argc, argv); if (ret != EXIT_SUCCESS) - return EXIT_FAILURE; + goto cleanup; #if TEST_OOM_TRACE if (testDebug) @@ -431,9 +439,11 @@ int virtTestMain(int argc, else fprintf(stderr, " FAILED\n"); } - return ret; - +cleanup: #else - return (func)(argc, argv); + ret = (func)(argc, argv); #endif + + virResetLastError(); + return ret; }