From: Mark Wielaard Date: Wed, 4 Mar 2020 13:23:37 +0000 (+0100) Subject: Add suppressions for glibc DTV leaks X-Git-Tag: VALGRIND_3_16_0~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=28371e73dbb9eb6c003455cfb5d5663ca1d465fc;p=thirdparty%2Fvalgrind.git 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 --- diff --git a/NEWS b/NEWS index 84e08409db..afe8872f9c 100644 --- 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 diff --git a/glibc-2.X.supp.in b/glibc-2.X.supp.in index 126e8b3381..eeefa39351 100644 --- a/glibc-2.X.supp.in +++ b/glibc-2.X.supp.in @@ -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 +}