]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add suppressions for glibc DTV leaks
authorMark Wielaard <mark@klomp.org>
Wed, 4 Mar 2020 13:23:37 +0000 (14:23 +0100)
committerMark Wielaard <mark@klomp.org>
Wed, 4 Mar 2020 13:24:54 +0000 (14:24 +0100)
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

NEWS
glibc-2.X.supp.in

diff --git a/NEWS b/NEWS
index 84e08409dbed84021d98032be53a8af84eca62fd..afe8872f9cc017c737fcf6d5ba97390a4390d320 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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
 
 
index 126e8b3381be5e34021e80c1aaa3bff948eb01be..eeefa393519476120f6f0ce1320163b216339354 100644 (file)
    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
+}