From a41d7031412c61cdf55b67830dc37e6f50985f83 Mon Sep 17 00:00:00 2001 From: Jordan R Abrahams-Whitehead Date: Fri, 7 Jun 2024 21:16:54 +0000 Subject: [PATCH] Adds a allowlist of packages that have known memory leaks This adds an allowlist of packages that have known memory leaks. So that the leak detector will not report memory leaks from these packages. --- compiler-rt/lib/lsan/lsan_common.cpp | 3 ++ .../lib/lsan/lsan_default_suppression.h | 34 +++++++++++++++++++ .../lib/sanitizer_common/sanitizer_flags.inc | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 compiler-rt/lib/lsan/lsan_default_suppression.h diff --git a/compiler-rt/lib/lsan/lsan_common.cpp b/compiler-rt/lib/lsan/lsan_common.cpp index 8b1af5b629fb..4c8ad52b7d32 100644 --- a/compiler-rt/lib/lsan/lsan_common.cpp +++ b/compiler-rt/lib/lsan/lsan_common.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "lsan_common.h" +#include "lsan_default_suppression.h" #include "sanitizer_common/sanitizer_common.h" #include "sanitizer_common/sanitizer_flag_parser.h" @@ -136,6 +137,8 @@ void LeakSuppressionContext::LazyInit() { if (&__lsan_default_suppressions) context.Parse(__lsan_default_suppressions()); context.Parse(kStdSuppressions); + context.Parse(kLSanDefaultSuppressions); + if (flags()->use_tls && flags()->use_ld_allocations) suppress_module = GetLinker(); } diff --git a/compiler-rt/lib/lsan/lsan_default_suppression.h b/compiler-rt/lib/lsan/lsan_default_suppression.h new file mode 100644 index 000000000000..707c1ba0bbb6 --- /dev/null +++ b/compiler-rt/lib/lsan/lsan_default_suppression.h @@ -0,0 +1,34 @@ +namespace __lsan { + +char kLSanDefaultSuppressions[] = +// ================ Leaks in third-party code ================ + +// False positives in libfontconfig. http://crbug.com/39050 +"leak:libfontconfig\n" + +// Leaks in Nvidia's libGL. +"leak:libGL.so\n" + +"leak:libnssutil3\n" +"leak:libnspr4\n" +"leak:libnss3\n" +"leak:libplds4\n" +"leak:libnssckbi\n" + +// XRandR has several one time leaks. +"leak:libxrandr\n" + +// xrandr leak. http://crbug.com/119677 +"leak:XRRFindDisplay\n" + +// leak on session_manager. http://crbug.com/378805 +"leak:/sbin/session_manager\n" + +// leak on cryptohome. http://crbug.com/508281 +"leak:/usr/sbin/cryptohome\n" + +// leak on buffet. http://crbug.com/473700 +//"leak:/usr/bin/buffet\n" +// End of suppressions. +; // Please keep this semicolon. +} diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc index 6148ae56067c..c0b5b599e8ba 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc @@ -170,7 +170,7 @@ COMMON_FLAG(const char *, cov_pcs_out, "", COMMON_FLAG(bool, full_address_space, false, "Sanitize complete address space; " "by default kernel area on 32-bit platforms will not be sanitized") -COMMON_FLAG(bool, print_suppressions, true, +COMMON_FLAG(bool, print_suppressions, false, "Print matched suppressions at exit.") COMMON_FLAG( bool, disable_coredump, (SANITIZER_WORDSIZE == 64) && !SANITIZER_GO, -- 2.45.2.505.gda0bf45e8d-goog