Add suppressions for glibc DTV leaks

The glibc DTV (Dynamic Thread Vector) for the main thread is never
released, not even through __libc_freeres. This causes it to always
show up as a reachable block when used, and sometimes, when it is
extended and then reduced, as a possible leak when memcheck cannot
find a pointer to the start of the block.

https://bugzilla.redhat.com/show_bug.cgi?id=1796433
https://bugzilla.redhat.com/show_bug.cgi?id=1796559

https://bugs.kde.org/show_bug.cgi?id=417578
This commit is contained in:
Mark Wielaard 2020-03-04 14:23:37 +01:00
parent 5920eb0c43
commit 28371e73db
2 changed files with 35 additions and 0 deletions

1
NEWS
View File

@ -126,6 +126,7 @@ n-i-bz Fix non-glibc build of test suite with s390x_features
417427 commit to fix vki_siginfo_t definition created numerous regression
errors on ppc64
417452 s390_insn_store_emit: dst->tag for HRcVec128
417578 Add suppressions for glibc DTV leaks
417906 clone with CLONE_VFORK and no CLONE_VM fails

View File

@ -248,3 +248,37 @@
Memcheck:Cond
fun:_dl_runtime_resolve_avx_slow
}
# The main thread dynamic thread vector, DTV, which contains pointers
# to thread local variables, isn't freed. There are a couple of call
# patterns that can cause it to be extended.
{
dtv-addr-tail
Memcheck:Leak
match-leak-kinds: possible,reachable
fun:malloc
fun:tls_get_addr_tail*
fun:__tls_get_addr
}
{
dtv-addr-resize
Memcheck:Leak
match-leak-kinds: possible,reachable
fun:malloc
fun:_dl_resize_dtv
fun:_dl_update_slotinfo
fun:update_get_addr
fun:__tls_get_addr
}
{
dtv-addr-init
Memcheck:Leak
match-leak-kinds: possible,reachable
fun:malloc
fun:allocate_dtv_entry
fun:allocate_and_init
fun:tls_get_addr_tail*
fun:__tls_get_addr
}