[compiler-rt] r318980 - Plug dlerror() leak for swift_demangle

Kamil Rytarowski via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 25 08:47:20 PST 2017


Author: kamil
Date: Sat Nov 25 08:47:20 2017
New Revision: 318980

URL: http://llvm.org/viewvc/llvm-project?rev=318980&view=rev
Log:
Plug dlerror() leak for swift_demangle

Summary:
InitializeSwiftDemangler() attempts to resolve the
swift_demangle symbol. If this is not available, we
observe dlerror message leak.

Caught on NetBSD/amd64 in TSan.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, kubamracek, vitalybuka, dvyukov, eugenis

Reviewed By: dvyukov

Subscribers: llvm-commits, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D40382

Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc?rev=318980&r1=318979&r2=318980&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc Sat Nov 25 08:47:20 2017
@@ -77,6 +77,7 @@ static swift_demangle_ft swift_demangle_
 // symbolication.
 static void InitializeSwiftDemangler() {
   swift_demangle_f = (swift_demangle_ft)dlsym(RTLD_DEFAULT, "swift_demangle");
+  (void)dlerror(); // Cleanup error message in case of failure
 }
 
 // Attempts to demangle a Swift name. The demangler will return nullptr if a




More information about the llvm-commits mailing list