<div dir="ltr">Probably broken by this patch <a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/466">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/466</a></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Dec 20, 2016 at 4:28 PM Evgeniy Stepanov via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: eugenis<br class="gmail_msg">
Date: Tue Dec 20 18:18:10 2016<br class="gmail_msg">
New Revision: 290218<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=290218&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=290218&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
Reduce the size of quarantine cache in ASAN_LOW_MEMORY configuration.<br class="gmail_msg">
<br class="gmail_msg">
Summary:<br class="gmail_msg">
Experiments show that on Android the current values result in too much<br class="gmail_msg">
of the memory consumption for all quarantined chunks.<br class="gmail_msg">
<br class="gmail_msg">
Reviewers: kcc, eugenis<br class="gmail_msg">
<br class="gmail_msg">
Subscribers: mgorny, danalbert, srhines, llvm-commits, kubabrecka<br class="gmail_msg">
<br class="gmail_msg">
Patch by Aleksey Shlyapnikov.<br class="gmail_msg">
<br class="gmail_msg">
Differential Revision: <a href="https://reviews.llvm.org/D27873" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D27873</a><br class="gmail_msg">
<br class="gmail_msg">
Modified:<br class="gmail_msg">
    compiler-rt/trunk/lib/asan/CMakeLists.txt<br class="gmail_msg">
    compiler-rt/trunk/lib/asan/asan_allocator.cc<br class="gmail_msg">
    compiler-rt/trunk/lib/asan/asan_flags.cc<br class="gmail_msg">
    compiler-rt/trunk/lib/asan/asan_internal.h<br class="gmail_msg">
<br class="gmail_msg">
Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=290218&r1=290217&r2=290218&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=290218&r1=290217&r2=290218&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)<br class="gmail_msg">
+++ compiler-rt/trunk/lib/asan/CMakeLists.txt Tue Dec 20 18:18:10 2016<br class="gmail_msg">
@@ -41,8 +41,6 @@ append_rtti_flag(OFF ASAN_CFLAGS)<br class="gmail_msg">
 set(ASAN_DYNAMIC_LINK_FLAGS)<br class="gmail_msg">
<br class="gmail_msg">
 if(ANDROID)<br class="gmail_msg">
-  list(APPEND ASAN_COMMON_DEFINITIONS<br class="gmail_msg">
-    ASAN_LOW_MEMORY=1)<br class="gmail_msg">
 # On Android, -z global does not do what it is documented to do.<br class="gmail_msg">
 # On Android, -z global moves the library ahead in the lookup order,<br class="gmail_msg">
 # placing it right after the LD_PRELOADs. This is used to compensate for the fact<br class="gmail_msg">
<br class="gmail_msg">
Modified: compiler-rt/trunk/lib/asan/asan_allocator.cc<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_allocator.cc?rev=290218&r1=290217&r2=290218&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_allocator.cc?rev=290218&r1=290217&r2=290218&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- compiler-rt/trunk/lib/asan/asan_allocator.cc (original)<br class="gmail_msg">
+++ compiler-rt/trunk/lib/asan/asan_allocator.cc Tue Dec 20 18:18:10 2016<br class="gmail_msg">
@@ -227,7 +227,12 @@ struct Allocator {<br class="gmail_msg">
   static const uptr kMaxAllowedMallocSize =<br class="gmail_msg">
       FIRST_32_SECOND_64(3UL << 30, 1ULL << 40);<br class="gmail_msg">
   static const uptr kMaxThreadLocalQuarantine =<br class="gmail_msg">
-      FIRST_32_SECOND_64(1 << 18, 1 << 20);<br class="gmail_msg">
+      // It is not advised to go lower than 64Kb, otherwise quarantine batches<br class="gmail_msg">
+      // pushed from thread local quarantine to global one will create too much<br class="gmail_msg">
+      // overhead. One quarantine batch size is 8Kb and it  holds up to 1021<br class="gmail_msg">
+      // chunk, which amounts to 1/8 memory overhead per batch when thread local<br class="gmail_msg">
+      // quarantine is set to 64Kb.<br class="gmail_msg">
+      (ASAN_LOW_MEMORY) ? 1 << 16 : FIRST_32_SECOND_64(1 << 18, 1 << 20);<br class="gmail_msg">
<br class="gmail_msg">
   AsanAllocator allocator;<br class="gmail_msg">
   AsanQuarantine quarantine;<br class="gmail_msg">
<br class="gmail_msg">
Modified: compiler-rt/trunk/lib/asan/asan_flags.cc<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_flags.cc?rev=290218&r1=290217&r2=290218&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_flags.cc?rev=290218&r1=290217&r2=290218&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- compiler-rt/trunk/lib/asan/asan_flags.cc (original)<br class="gmail_msg">
+++ compiler-rt/trunk/lib/asan/asan_flags.cc Tue Dec 20 18:18:10 2016<br class="gmail_msg">
@@ -156,7 +156,7 @@ void InitializeFlags() {<br class="gmail_msg">
     f->quarantine_size_mb = f->quarantine_size >> 20;<br class="gmail_msg">
   if (f->quarantine_size_mb < 0) {<br class="gmail_msg">
     const int kDefaultQuarantineSizeMb =<br class="gmail_msg">
-        (ASAN_LOW_MEMORY) ? 1UL << 6 : 1UL << 8;<br class="gmail_msg">
+        (ASAN_LOW_MEMORY) ? 1UL << 4 : 1UL << 8;<br class="gmail_msg">
     f->quarantine_size_mb = kDefaultQuarantineSizeMb;<br class="gmail_msg">
   }<br class="gmail_msg">
   if (!f->replace_str && common_flags()->intercept_strlen) {<br class="gmail_msg">
<br class="gmail_msg">
Modified: compiler-rt/trunk/lib/asan/asan_internal.h<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_internal.h?rev=290218&r1=290217&r2=290218&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_internal.h?rev=290218&r1=290217&r2=290218&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- compiler-rt/trunk/lib/asan/asan_internal.h (original)<br class="gmail_msg">
+++ compiler-rt/trunk/lib/asan/asan_internal.h Tue Dec 20 18:18:10 2016<br class="gmail_msg">
@@ -36,7 +36,7 @@<br class="gmail_msg">
 // If set, values like allocator chunk size, as well as defaults for some flags<br class="gmail_msg">
 // will be changed towards less memory overhead.<br class="gmail_msg">
 #ifndef ASAN_LOW_MEMORY<br class="gmail_msg">
-# if SANITIZER_IOS || (SANITIZER_WORDSIZE == 32)<br class="gmail_msg">
+# if SANITIZER_IOS || SANITIZER_ANDROID<br class="gmail_msg">
 #  define ASAN_LOW_MEMORY 1<br class="gmail_msg">
 # else<br class="gmail_msg">
 #  define ASAN_LOW_MEMORY 0<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div>