How can I use valgrind with Python C++ extensions?

Yes, you can use valgrind with Python. You just need to use the valgrind suppression file provided by the Python developers, so you don’t get a bunch of false positives due to Python’s custom memory allocation/reallocation functions.

The valgrind suppression file can be found here:

IMPORTANT: You need to uncomment the lines for PyObject_Free and PyObject_Realloc in the suppression file*.

The recommended usage syntax is:

$ valgrind --tool=memcheck --suppressions=valgrind-python.supp \
                                          python -E -tt ./

See also this README file from the Python SVN repo which describes the different ways of using Python with valgrind:

* – Alternatively, you can recompile Python with PyMalloc disabled, which allows you to catch more memory leaks that won’t show up if you just suppress PyMalloc.

Leave a Comment