valgrind: ["--tool=memcheck"]
workunit:
env:
- VALGRIND: "memcheck"
+ VALGRIND: "--tool=memcheck --leak-check=full"
#!/bin/sh -e
if [ -n "${VALGRIND}" ]; then
- valgrind --tool=${VALGRIND} --suppressions=${TESTDIR}/valgrind.supp \
- ceph_test_librbd
+ valgrind ${VALGRIND} --suppressions=${TESTDIR}/valgrind.supp \
+ --error-exitcode=1 ceph_test_librbd
else
ceph_test_librbd
fi
relpath=$(dirname $0)/../../../src/test/pybind
if [ -n "${VALGRIND}" ]; then
- valgrind --tool=${VALGRIND} --suppressions=${TESTDIR}/valgrind.supp \
+ valgrind ${VALGRIND} --suppressions=${TESTDIR}/valgrind.supp \
+ --errors-for-leak-kinds=definite --error-exitcode=1 \
nosetests -v $relpath/test_rbd.py
else
nosetests -v $relpath/test_rbd.py
#!/bin/sh -e
if [ -n "${VALGRIND}" ]; then
- valgrind --tool=${VALGRIND} --suppressions=${TESTDIR}/valgrind.supp \
- ceph_test_rbd_mirror
+ valgrind ${VALGRIND} --suppressions=${TESTDIR}/valgrind.supp \
+ --error-exitcode=1 ceph_test_rbd_mirror
else
ceph_test_rbd_mirror
fi
fun:pthread_create@*
...
}
+
+# rados cython constants
+{
+ <insert_a_suppression_name_here>
+ Memcheck:Leak
+ match-leak-kinds: definite
+ fun:malloc
+ fun:PyObject_Malloc
+ fun:PyCode_New
+ fun:__Pyx_InitCachedConstants
+ fun:initrados
+ fun:_PyImport_LoadDynamicModule
+ ...
+ fun:PyImport_ImportModuleLevel
+ ...
+ fun:PyObject_Call
+ fun:PyEval_CallObjectWithKeywords
+ fun:PyEval_EvalFrameEx
+}
+
+# rbd cython constants
+{
+ <insert_a_suppression_name_here>
+ Memcheck:Leak
+ match-leak-kinds: definite
+ fun:malloc
+ fun:PyObject_Malloc
+ fun:PyCode_New
+ fun:__Pyx_InitCachedConstants
+ fun:initrbd
+ fun:_PyImport_LoadDynamicModule
+ ...
+ fun:PyImport_ImportModuleLevel
+ ...
+ fun:PyObject_Call
+ fun:PyEval_CallObjectWithKeywords
+ fun:PyEval_EvalFrameEx
+}