Fix bogus valgrind memory leak warnings in test suite

This commit is contained in:
Daniel P. Berrange 2009-01-28 21:53:48 +00:00
parent 9322b2e861
commit ca9af16aa7
3 changed files with 40 additions and 8 deletions

View File

@ -1,4 +1,11 @@
Wed Jan 28 21:33:11 GMT 2009 Daniel P.Berrange <berrange@redhat.com
Wed Jan 28 21:53:11 GMT 2009 Daniel P.Berrange <berrange@redhat.com>
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 <berrange@redhat.com>
Fix RPC portability to Solaris
* configure.in: s/RPCGEN/HAVE_RPCGEN/ for automake

View File

@ -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
}

View File

@ -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 <execinfo.h>
@ -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;
}