[compiler-rt] r177745 - Band-aid fix for the Windows build caused by r177710. Long-term, atomic_compare_exchange_strong should be a template on Windows too...

Alexey Samsonov samsonov at google.com
Fri Mar 22 11:14:50 PDT 2013


On Fri, Mar 22, 2013 at 10:05 PM, Timur Iskhodzhanov <timurrrr at google.com>wrote:

> Author: timurrrr
> Date: Fri Mar 22 13:05:28 2013
> New Revision: 177745
>
> URL: http://llvm.org/viewvc/llvm-project?rev=177745&view=rev
> Log:
> Band-aid fix for the Windows build caused by r177710. Long-term,
> atomic_compare_exchange_strong should be a template on Windows too...
>
> Modified:
>     compiler-rt/trunk/lib/asan/asan_allocator2.cc
>
> Modified: compiler-rt/trunk/lib/asan/asan_allocator2.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_allocator2.cc?rev=177745&r1=177744&r2=177745&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_allocator2.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_allocator2.cc Fri Mar 22 13:05:28 2013
> @@ -423,7 +423,8 @@ static void Deallocate(void *ptr, StackT
>
>    u8 old_chunk_state = CHUNK_ALLOCATED;
>    // Flip the chunk_state atomically to avoid race on double-free.
> -  if (!atomic_compare_exchange_strong((atomic_uint8_t*)m,
> &old_chunk_state,
> +  if (!atomic_compare_exchange_strong((atomic_uintptr_t*)m,
> +                                      (uptr*)&old_chunk_state,
>                                        CHUNK_QUARANTINE,
> memory_order_relaxed)) {
>      if (old_chunk_state == CHUNK_QUARANTINE)
>        ReportDoubleFree((uptr)ptr, stack);
>

Wait, you should atomically store one byte, not sizeof(uintptr_t). I think
you will write some random garbage at address m in this way.


>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130322/9c9ce19f/attachment.html>


More information about the llvm-commits mailing list