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
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
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
+}