<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 18, 2016 at 6:00 AM, Kuba Brecka via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Author: kuba.brecka<br>
Date: Wed May 18 08:00:20 2016<br>
New Revision: 269917<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=269917&view=rev" rel="noreferrer">http://llvm.org/viewvc/llvm-project?rev=269917&view=rev</a><br>
Log:<br>
[sanitizer] Fix a crash when demangling Swift symbols, take 3<br>
<br>
The previous patch (r269291) was reverted (commented out) because the patch caused leaks that<br>
were detected by LSan and they broke some lit tests.  The actual reason was that dlsym allocates<br>
an error string buffer in TLS, and some LSan lit tests are intentionally not scanning TLS for<br>
root pointers.  This patch simply makes LSan ignore the allocation from dlsym, because it's<br>
not interesting anyway.<br>
<br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
    compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=269917&r1=269916&r2=269917&view=diff" rel="noreferrer">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=269917&r1=269916&r2=269917&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_rtl.cc Wed May 18 08:00:20 2016<br>
@@ -553,8 +553,14 @@ static void AsanInitInternal() {<br>
<br>
   InitializeSuppressions();<br>
<br>
-  // TODO(kuba) Fix Me.<br>
-  // Symbolizer::LateInitialize();<br>
+  {<br>
+#if CAN_SANITIZE_LEAKS<br></blockquote><div><br></div><div>This adds one more #ifdef. </div><div>Please, can we have fewer of those? </div><div><br></div><div>if(CAN_SANITIZE_LEAKS) or similar would be much better! </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
+    // LateInitialize() calls dlsym, which can allocate an error string buffer<br>
+    // in the TLS.  Let's ignore the allocation to avoid reporting a leak.<br>
+    __lsan::ScopedInterceptorDisabler disabler;<br>
+#endif<br>
+    Symbolizer::LateInitialize();<br>
+  }<br>
<br>
   VReport(1, "AddressSanitizer Init done\n");<br>
 }<br>
<br>
Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc?rev=269917&r1=269916&r2=269917&view=diff" rel="noreferrer">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc?rev=269917&r1=269916&r2=269917&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc (original)<br>
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc Wed May 18 08:00:20 2016<br>
@@ -371,8 +371,7 @@ void Initialize(ThreadState *thr) {<br>
   ctx->initialized = true;<br>
<br>
 #ifndef SANITIZER_GO<br>
-  // TODO(kuba) Fix Me.<br>
-  // Symbolizer::LateInitialize();<br>
+  Symbolizer::LateInitialize();<br>
 #endif<br>
<br>
   if (flags()->stop_on_start) {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>