(Observed with valgrind 3.2.1, fixed in 3.2.3)
Valgrind 3.2.1 sometimes produces supressions that don't work, like this:
{ <insert a suppression name here> Memcheck:Free fun:_vgrZU_libcZdsoZa_free fun:main }
The identifying characteristic is that they begin with fun:_vg<something>
http://article.gmane.org/gmane.comp.debugging.valgrind/5939 explains what these symbols are.
The workaround is to replace fun:vg*_lib*<something> with fun:<something>, where something
should be a valid C or C++ mangled symbol.
The following test program demonstrates the problem
#include <stdlib.h> int main(int argc,char**argv) { char*p = malloc(10); free(p); free(p); }