<div dir="ltr">Thanks! </div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Apr 14, 2014 at 9:54 PM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Mon, Apr 14, 2014 at 9:59 AM, Kostya Serebryany <<a href="mailto:kcc@google.com">kcc@google.com</a>> wrote:<br>
> Ouch, I am sorry.<br>
> May I ask you to apply a fix (I am running home and have no Windows box<br>
> handy to test anyway).<br>
><br>
> Most likely, you need to add atomic_fetch_add/atomic_fetch_sub for<br>
> atomic_uintptr_t,<br>
> just duplicate two corresponding functions around<br>
> sanitizer_common/sanitizer_atomic_msvc.h (line 104)<br>
<br>
</div>Committed fix attempt in r206200.<br>
<br>
Thanks,<br>
Hans<br>
<div class="HOEnZb"><div class="h5"><br>
> On Mon, Apr 14, 2014 at 9:41 AM, Hans Wennborg <<a href="mailto:hans@chromium.org">hans@chromium.org</a>> wrote:<br>
>><br>
>> Hi Kostya,<br>
>><br>
>> On Mon, Apr 14, 2014 at 7:51 AM, Kostya Serebryany <<a href="mailto:kcc@google.com">kcc@google.com</a>> wrote:<br>
>> > Author: kcc<br>
>> > Date: Mon Apr 14 09:51:01 2014<br>
>> > New Revision: 206178<br>
>> ><br>
>> > URL: <a href="http://llvm.org/viewvc/llvm-project?rev=206178&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=206178&view=rev</a><br>
>> > Log:<br>
>> > [asan] added internal flag mmap_limit_mb<br>
>> ><br>
>><br>
>> [...]<br>
>><br>
>> > --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc<br>
>> > (original)<br>
>> > +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc Mon Apr<br>
>> > 14 09:51:01 2014<br>
>> > @@ -244,6 +244,24 @@ char *StripModuleName(const char *module<br>
>> > return internal_strdup(short_module_name);<br>
>> > }<br>
>> ><br>
>> > +static atomic_uintptr_t g_total_mmaped;<br>
>> > +<br>
>> > +void IncreaseTotalMmap(uptr size) {<br>
>> > + if (!common_flags()->mmap_limit_mb) return;<br>
>> > + uptr total_mmaped =<br>
>> > + atomic_fetch_add(&g_total_mmaped, size, memory_order_relaxed) +<br>
>> > size;<br>
>><br>
>> I'm getting a build error here with MSVC:<br>
>><br>
>><br>
>> E:\b\build\slave\Chromium_Win_Clang\build\src\third_party\llvm\projects\compiler-rt\lib\sanitizer_common\sanitizer_common.cc(252)<br>
>> : error C2664: '__sanitizer::u32<br>
>> __sanitizer::atomic_fetch_add(volatile __sanitizer::atomic_uint32_t<br>
>> *,__sanitizer::u32,__sanitizer::memory_order)' : cannot convert<br>
>> argument 1 from '__sanitizer::atomic_uintptr_t *' to 'volatile<br>
>> __sanitizer::atomic_uint32_t *'<br>
>><br>
>><br>
>><br>
>> Types pointed to are unrelated; conversion requires<br>
>> reinterpret_cast, C-style cast or function-style cast<br>
>><br>
>><br>
>> > + if ((total_mmaped >> 20) > common_flags()->mmap_limit_mb) {<br>
>> > + // Since for now mmap_limit_mb is not a user-facing flag, just<br>
>> > CHECK.<br>
>> > + common_flags()->mmap_limit_mb = 0; // Allow mmap in CHECK.<br>
>> > + CHECK_LT(total_mmaped >> 20, common_flags()->mmap_limit_mb);<br>
>> > + }<br>
>> > +}<br>
>> > +<br>
>> > +void DecreaseTotalMmap(uptr size) {<br>
>> > + if (!common_flags()->mmap_limit_mb) return;<br>
>> > + atomic_fetch_sub(&g_total_mmaped, size, memory_order_relaxed);<br>
>><br>
>> And:<br>
>><br>
>><br>
>> E:\b\build\slave\Chromium_Win_Clang\build\src\third_party\llvm\projects\compiler-rt\lib\sanitizer_common\sanitizer_common.cc(262)<br>
>> : error C2664: '__sanitizer::u32<br>
>> __sanitizer::atomic_fetch_sub(volatile __sanitizer::atomic_uint32_t<br>
>> *,__sanitizer::u32,__sanitizer::memory_order)' : cannot convert<br>
>> argument 1 from '__sanitizer::atomic_uintptr_t *' to 'volatile<br>
>> __sanitizer::atomic_uint32_t *'<br>
>><br>
>><br>
>><br>
>> Types pointed to are unrelated; conversion requires<br>
>> reinterpret_cast, C-style cast or function-style cast<br>
><br>
><br>
</div></div></blockquote></div><br></div>