|
From: Deene D. <dd...@ma...> - 2020-03-03 18:51:18
|
Hi,
I'm running some Valgrind test programs (using 3.15.0) that trigger all of the Memcheck errors and have noticed that a suppression file (I was accidently loading) was suppressing a bunch of the issues, but on the surface the match was 'obj:*' for 'fun:*' which is not what I expected.
e.g. without adding the suppression file I get the nice simple Definite Leak
==241898== 8 bytes in 1 blocks are definitely lost in loss record 1 of 2
==241898== at 0x4C2BF0D: malloc (/valgrind/valgrind-3.15.0/src/valgrind-3.15.0/coregrind/m_replacemalloc/vg_replace_malloc.c:309)
==241898== by 0x400884: LDL_2() (/src/test_valgrind/test_ldl.cpp:72)
==241898== by 0x4008AE: main (/src/test_valgrind/test_ldl.cpp:80)
==241898==
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_Z5LDL_2v
fun:main
}
Adding in the suppression file the issue is suppressed:
--243931-- used_suppression: 1 <insert_a_suppression_name_here> /devel/valgrind_glnxa64.supp:17391 suppressed: 8 bytes in 1 blocks
e.g.
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
obj:*
obj:*
obj:*
}
After reading '2.5. Suppressing errors' from the user manual I would assume using an 'obj:' or a 'fun:' implied there had to be a match of that type, and that any wildcard kicked in after the type (i.e. shared lib or function) was matched.
Is that not the case?
i.e. is the above suppression really the same as
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
}
Thanks
|