atomic_compare_exchange_strong() in Deallocate must be done with memory_order_acquire, and also add a comment similar to the one in Allocate() (it must be the first mutation of the metadata). Other than that looks good. http://llvm-reviews.chandlerc.com/D825 BRANCH feat/asan/atomics ARCANIST PROJECT compiler-rt