<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.gmail-im
        {mso-style-name:gmail-im;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">>
</span>Wow. So, by making a innocent-looking change in the allocator we crash the kernel? <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Yep, it seems that way. I've tried an updated kernel which seems to fix the problem (or at least makes it go away for 'ninja check-asan'). This kernel might cause some sanitizer failures but a few failures is better than not testing and
 I think Sagar has already posted fixes for some of them.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> can you test your kernel with kasan? <o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Unfortunately, the Mips arch lacks some of the prerequisites for CONFIG_KASAN at the moment. The main one we're missing is HAVE_ARCH_KASAN but there's a couple others.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Kostya Serebryany [mailto:kcc@google.com]
<br>
<b>Sent:</b> 09 August 2016 03:23<br>
<b>To:</b> Daniel Sanders<br>
<b>Cc:</b> llvm-commits@lists.llvm.org<br>
<b>Subject:</b> Re: [compiler-rt] r276318 - [sanitizer] allocator: remove kPopulateSize and only use SizeClassMap::MaxCached; ensure that TransferBatch size is a power of two, refactor TransferBatch creation/destruction into separate functions.<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Mon, Aug 8, 2016 at 8:54 AM, Daniel Sanders <<a href="mailto:Daniel.Sanders@imgtec.com" target="_blank">Daniel.Sanders@imgtec.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal">Python becomes unusable after 'Asan-mipsel-inline-Test/AddressSanitizer.AllocDeallocMismatch' fails. I've also found that the regressions go away if I revert the changes to sanitizer_allocator_size_class_map.h and sanitizer_allocator_test.cc
 but keep everything else.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Wow. So, by making a innocent-looking change in the allocator we crash the kernel? <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">The change in <span style="font-size:9.5pt">sanitizer_allocator_size_class_map.h may have triggered some old dormant bug in the run-time, </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">that somehow caused kernel to misbehave, or it just triggered a kernel bug by changing the mmap pattern in  the test.  </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt">I expect to make more changes in the same place to make it use less RAM, so maybe the problem will disappear again. </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">can you test your kernel with kasan? <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal"><br>
<span class="gmail-im">> -----Original Message-----</span><br>
<span class="gmail-im">> From: Daniel Sanders</span><br>
<span class="gmail-im">> Sent: 08 August 2016 13:08</span><br>
<span class="gmail-im">> To: 'Kostya Serebryany'; <a href="mailto:llvm-commits@lists.llvm.org">
llvm-commits@lists.llvm.org</a></span><br>
<span class="gmail-im">> Subject: RE: [compiler-rt] r276318 - [sanitizer] allocator: remove</span><br>
<span class="gmail-im">> kPopulateSize and only use SizeClassMap::MaxCached; ensure that</span><br>
<span class="gmail-im">> TransferBatch size is a power of two, refactor TransferBatch</span><br>
<span class="gmail-im">> creation/destruction into separate functions.</span><br>
<span class="gmail-im">></span><br>
<span class="gmail-im">> Hi Kostya,</span><br>
<span class="gmail-im">></span><br>
<span class="gmail-im">> This commit appears to be the root cause for the machine-killing bug I</span><br>
<span class="gmail-im">> mentioned to you a couple weeks ago. I haven't figured out why it happens</span><br>
<span class="gmail-im">> yet though.</span><br>
<span class="gmail-im">></span><br>
<span class="gmail-im">> Having compiler-rt at r276317 and everything else at r276320 works fine</span><br>
<span class="gmail-im">> (moving llvm and clang to r276317 causes link failures), but if I then move</span><br>
<span class="gmail-im">> compiler-rt to r276318 then some test cases fail in 'ninja check-asan' and the</span><br>
<span class="gmail-im">> system becomes unable to start python until the machine is rebooted. After</span><br>
<span class="gmail-im">> the reboot, everything is fine until 'ninja check-asan' is run again.</span><br>
<span class="gmail-im">></span><br>
<span class="gmail-im">> Sorry it's taken so long to narrow it down to one commit. I'll let you know</span><br>
<span class="gmail-im">> when I've narrowed it down to a single test</span><br>
<span class="gmail-im">></span><br>
<span class="gmail-im">> > -----Original Message-----</span><br>
<span class="gmail-im">> > From: llvm-commits [mailto:<a href="mailto:llvm-commits-bounces@lists.llvm.org">llvm-commits-bounces@lists.llvm.org</a>] On</span><br>
<span class="gmail-im">> Behalf</span><br>
<span class="gmail-im">> > Of Kostya Serebryany via llvm-commits</span><br>
<span class="gmail-im">> > Sent: 21 July 2016 19:48</span><br>
<span class="gmail-im">> > To: <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a></span><br>
<span class="gmail-im">> > Subject: [compiler-rt] r276318 - [sanitizer] allocator: remove kPopulateSize</span><br>
<span class="gmail-im">> > and only use SizeClassMap::MaxCached; ensure that TransferBatch size is a</span><br>
<span class="gmail-im">> > power of two, refactor TransferBatch creation/destruction into separate</span><br>
<span class="gmail-im">> > functions.</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> > Author: kcc</span><br>
<span class="gmail-im">> > Date: Thu Jul 21 13:47:53 2016</span><br>
<span class="gmail-im">> > New Revision: 276318</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> > URL: <a href="http://llvm.org/viewvc/llvm-project?rev=276318&view=rev" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=276318&view=rev</a></span><br>
<span class="gmail-im">> > Log:</span><br>
<span class="gmail-im">> > [sanitizer] allocator: remove kPopulateSize and only use</span><br>
<span class="gmail-im">> > SizeClassMap::MaxCached; ensure that TransferBatch size is a power of</span><br>
<span class="gmail-im">> two,</span><br>
<span class="gmail-im">> > refactor TransferBatch creation/destruction into separate functions.</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> > Modified:</span><br>
<span class="gmail-im">> >     compiler-</span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/sanitizer_allocator_local_cache.h</span><br>
<span class="gmail-im">> >     compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary32.h</span><br>
<span class="gmail-im">> >     compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary64.h</span><br>
<span class="gmail-im">> >     compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_size_class_map.h</span><br>
<span class="gmail-im">> >     compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> > Modified: compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_local_cache.h</span><br>
<span class="gmail-im">> > URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-" target="_blank">
http://llvm.org/viewvc/llvm-project/compiler-</a></span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/sanitizer_allocator_local_cache.h?rev=27631</span><br>
<span class="gmail-im">> > 8&r1=276317&r2=276318&view=diff</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> ==========================================================</span><br>
<span class="gmail-im">> > ====================</span><br>
<span class="gmail-im">> > --- compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_local_cache.h (original)</span><br>
<span class="gmail-im">> > +++ compiler-</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_local_cache.h Thu Jul 21<br>
> > 13:47:53 2016<br>
> > @@ -88,6 +88,23 @@ struct SizeClassAllocatorLocalCache {<br>
> >      }<br>
> >    }<br>
> ><br>
> > +  // Returns a Batch suitable for class_id.<br>
> > +  // For small size classes allocates the batch from the allocator.<br>
> > +  // For large size classes simply returns b.<br>
> > +  Batch *CreateBatch(uptr class_id, SizeClassAllocator *allocator, Batch *b)<br>
> {<br>
> > +    if (SizeClassMap::SizeClassRequiresSeparateTransferBatch(class_id))<br>
> > +      return (Batch*)Allocate(allocator,<br>
> SizeClassMap::ClassID(sizeof(Batch)));<br>
> > +    return b;<br>
> > +  }<br>
> > +<br>
> > +  // Destroys Batch b.<br>
> > +  // For small size classes deallocates b to the allocator.<br>
> > +  // Does notthing for large size classes.<br>
> > +  void DestroyBatch(uptr class_id, SizeClassAllocator *allocator, Batch *b) {<br>
> > +    if (SizeClassMap::SizeClassRequiresSeparateTransferBatch(class_id))<br>
> > +      Deallocate(allocator, SizeClassMap::ClassID(sizeof(Batch)), b);<br>
> > +  }<br>
> > +<br>
> >    NOINLINE void Refill(SizeClassAllocator *allocator, uptr class_id) {<br>
> >      InitCache();<br>
> >      PerClass *c = &per_class_[class_id];<br>
> > @@ -96,18 +113,13 @@ struct SizeClassAllocatorLocalCache {<br>
> >      for (uptr i = 0; i < b->count; i++)<br>
> >        c->batch[i] = b->batch[i];<br>
> >      c->count = b->count;<br>
> > -    if (SizeClassMap::SizeClassRequiresSeparateTransferBatch(class_id))<br>
> > -      Deallocate(allocator, SizeClassMap::ClassID(sizeof(Batch)), b);<br>
> > +    DestroyBatch(class_id, allocator, b);<br>
> >    }<br>
> ><br>
> >    NOINLINE void Drain(SizeClassAllocator *allocator, uptr class_id) {<br>
> >      InitCache();<br>
> >      PerClass *c = &per_class_[class_id];<br>
> > -    Batch *b;<br>
> > -    if (SizeClassMap::SizeClassRequiresSeparateTransferBatch(class_id))<br>
> > -      b = (Batch*)Allocate(allocator, SizeClassMap::ClassID(sizeof(Batch)));<br>
> > -    else<br>
> > -      b = (Batch*)c->batch[0];<br>
> > +    Batch *b = CreateBatch(class_id, allocator, (Batch*)c->batch[0]);<br>
> >      uptr cnt = Min(c->max_count / 2, c->count);<br>
> >      for (uptr i = 0; i < cnt; i++) {<br>
> >        b->batch[i] = c->batch[i];<br>
> > @@ -119,5 +131,3 @@ struct SizeClassAllocatorLocalCache {<br>
> >      allocator->DeallocateBatch(&stats_, class_id, b);<br>
> >    }<br>
> >  };<br>
> > -<br>
> > -<br>
> ><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><span class="gmail-im">> > Modified: compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary32.h</span><br>
<span class="gmail-im">> > URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-" target="_blank">
http://llvm.org/viewvc/llvm-project/compiler-</a></span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary32.h?rev=276318</span><br>
<span class="gmail-im">> > &r1=276317&r2=276318&view=diff</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> ==========================================================</span><br>
<span class="gmail-im">> > ====================</span><br>
<span class="gmail-im">> > --- compiler-</span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary32.h</span><br>
<span class="gmail-im">> > (original)</span><br>
<span class="gmail-im">> > +++ compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary32.h Thu Jul 21</span><br>
<span class="gmail-im">> > 13:47:53 2016</span><br>
<span class="gmail-im">> > @@ -231,10 +231,7 @@ class SizeClassAllocator32 {</span><br>
<span class="gmail-im">> >      Batch *b = nullptr;</span><br>
<span class="gmail-im">> >      for (uptr i = reg; i < reg + n_chunks * size; i += size) {</span><br>
<span class="gmail-im">> >        if (!b) {</span><br>
<span class="gmail-im">> > -        if (SizeClassMap::SizeClassRequiresSeparateTransferBatch(class_id))</span><br>
<span class="gmail-im">> > -          b = (Batch*)c->Allocate(this, SizeClassMap::ClassID(sizeof(Batch)));</span><br>
<span class="gmail-im">> > -        else</span><br>
<span class="gmail-im">> > -          b = (Batch*)i;</span><br>
<span class="gmail-im">> > +        b = c->CreateBatch(class_id, this, (Batch*)i);</span><br>
<span class="gmail-im">> >          b->count = 0;</span><br>
<span class="gmail-im">> >        }</span><br>
<span class="gmail-im">> >        b->batch[b->count++] = (void*)i;</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> > Modified: compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary64.h</span><br>
<span class="gmail-im">> > URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-" target="_blank">
http://llvm.org/viewvc/llvm-project/compiler-</a></span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary64.h?rev=276318</span><br>
<span class="gmail-im">> > &r1=276317&r2=276318&view=diff</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> ==========================================================</span><br>
<span class="gmail-im">> > ====================</span><br>
<span class="gmail-im">> > --- compiler-</span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary64.h</span><br>
<span class="gmail-im">> > (original)</span><br>
<span class="gmail-im">> > +++ compiler-</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_primary64.h Thu Jul 21<br>
> > 13:47:53 2016<br>
> > @@ -219,9 +219,6 @@ class SizeClassAllocator64 {<br>
> >    uptr SpaceEnd() const { return  SpaceBeg() + kSpaceSize; }<br>
> >    // kRegionSize must be >= 2^32.<br>
> >    COMPILER_CHECK((kRegionSize) >= (1ULL << (SANITIZER_WORDSIZE /<br>
> 2)));<br>
> > -  // Populate the free list with at most this number of bytes at once<br>
> > -  // or with one element if its size is greater.<br>
> > -  static const uptr kPopulateSize = 1 << 14;<br>
> >    // Call mmap for user memory with at least this size.<br>
> >    static const uptr kUserMapSize = 1 << 16;<br>
> >    // Call mmap for metadata memory with at least this size.<br>
> > @@ -261,7 +258,7 @@ class SizeClassAllocator64 {<br>
> >      if (b)<br>
> >        return b;<br>
> >      uptr size = SizeClassMap::Size(class_id);<br>
> > -    uptr count = size < kPopulateSize ? SizeClassMap::MaxCached(class_id) :<br>
> > 1;<br>
> > +    uptr count = SizeClassMap::MaxCached(class_id);<br>
> >      uptr beg_idx = region->allocated_user;<br>
> >      uptr end_idx = beg_idx + count * size;<br>
> >      uptr region_beg = SpaceBeg() + kRegionSize * class_id;<br>
> > @@ -296,10 +293,7 @@ class SizeClassAllocator64 {<br>
> >        Die();<br>
> >      }<br>
> >      for (;;) {<br>
> > -      if (SizeClassMap::SizeClassRequiresSeparateTransferBatch(class_id))<br>
> > -        b = (Batch*)c->Allocate(this, SizeClassMap::ClassID(sizeof(Batch)));<br>
> > -      else<br>
> > -        b = (Batch*)(region_beg + beg_idx);<br>
> > +      b = c->CreateBatch(class_id, this, (Batch*)(region_beg + beg_idx));<br>
> >        b->count = count;<br>
> >        for (uptr i = 0; i < count; i++)<br>
> >          b->batch[i] = (void*)(region_beg + beg_idx + i * size);<br>
> ><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><span class="gmail-im">> > Modified: compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_size_class_map.h</span><br>
<span class="gmail-im">> > URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-" target="_blank">
http://llvm.org/viewvc/llvm-project/compiler-</a></span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/sanitizer_allocator_size_class_map.h?rev=27</span><br>
<span class="gmail-im">> > 6318&r1=276317&r2=276318&view=diff</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> ==========================================================</span><br>
<span class="gmail-im">> > ====================</span><br>
<span class="gmail-im">> > --- compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_size_class_map.h</span><br>
<span class="gmail-im">> > (original)</span><br>
<span class="gmail-im">> > +++ compiler-</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">> > rt/trunk/lib/sanitizer_common/sanitizer_allocator_size_class_map.h Thu<br>
> Jul<br>
> > 21 13:47:53 2016<br>
> > @@ -87,14 +87,17 @@ class SizeClassMap {<br>
> ><br>
> >   public:<br>
> >    static const uptr kMaxNumCached = kMaxNumCachedT;<br>
> > +  COMPILER_CHECK(((kMaxNumCached + 2) & (kMaxNumCached + 1)) ==<br>
> > 0);<br>
> >    // We transfer chunks between central and thread-local free lists in<br>
> > batches.<br>
> >    // For small size classes we allocate batches separately.<br>
> >    // For large size classes we use one of the chunks to store the batch.<br>
> > +  // sizeof(TransferBatch) must be a power of 2 for more efficient<br>
> allocation.<br>
> >    struct TransferBatch {<br>
> >      TransferBatch *next;<br>
> >      uptr count;<br>
> >      void *batch[kMaxNumCached];<br>
> >    };<br>
> > +  COMPILER_CHECK((sizeof(TransferBatch) & (sizeof(TransferBatch) - 1))<br>
> ==<br>
> > 0);<br>
> ><br>
> >    static const uptr kMaxSize = 1UL << kMaxSizeLog;<br>
> >    static const uptr kNumClasses =<br>
> > @@ -180,7 +183,7 @@ class SizeClassMap {<br>
> >    }<br>
> >  };<br>
> ><br>
> > -typedef SizeClassMap<17, 128, 16> DefaultSizeClassMap;<br>
> > -typedef SizeClassMap<17, 64,  14> CompactSizeClassMap;<br>
> > +typedef SizeClassMap<17, 126, 16> DefaultSizeClassMap;<br>
> > +typedef SizeClassMap<17, 62,  14> CompactSizeClassMap;<br>
> >  template<class SizeClassAllocator> struct SizeClassAllocatorLocalCache;<br>
> ><br>
> ><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><span class="gmail-im">> > Modified: compiler-</span><br>
<span class="gmail-im">> > rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc</span><br>
<span class="gmail-im">> > URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-" target="_blank">
http://llvm.org/viewvc/llvm-project/compiler-</a></span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc?rev=276318</span><br>
<span class="gmail-im">> > &r1=276317&r2=276318&view=diff</span><br>
<span class="gmail-im">> ></span><br>
<span class="gmail-im">> ==========================================================</span><br>
<span class="gmail-im">> > ====================</span><br>
<span class="gmail-im">> > --- compiler-</span><br>
<span class="gmail-im">> rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc</span><br>
<span class="gmail-im">> > (original)</span><br>
<span class="gmail-im">> > +++ compiler-</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">> > rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc Thu Jul 21<br>
> > 13:47:53 2016<br>
> > @@ -781,7 +781,7 @@ TEST(SanitizerCommon, LargeMmapAllocator<br>
> >  // Regression test for out-of-memory condition in PopulateFreeList().<br>
> >  TEST(SanitizerCommon, SizeClassAllocator64PopulateFreeListOOM) {<br>
> >    // In a world where regions are small and chunks are huge...<br>
> > -  typedef SizeClassMap<63, 128, 16> SpecialSizeClassMap;<br>
> > +  typedef SizeClassMap<63, 126, 16> SpecialSizeClassMap;<br>
> >    typedef SizeClassAllocator64<kAllocatorSpace, kAllocatorSize, 0,<br>
> >                                 SpecialSizeClassMap> SpecialAllocator64;<br>
> >    const uptr kRegionSize =<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" target="_blank">
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>