diff --git a/compiler-rt/lib/hwasan/hwasan_thread.cpp b/compiler-rt/lib/hwasan/hwasan_thread.cpp --- a/compiler-rt/lib/hwasan/hwasan_thread.cpp +++ b/compiler-rt/lib/hwasan/hwasan_thread.cpp @@ -108,7 +108,15 @@ // Generate a (pseudo-)random non-zero tag. tag_t Thread::GenerateRandomTag() { - if (tagging_disabled_) return 0; + // Return non-zero when tagging is not disabled so that the allocator + // fallback knows whatever pointer is being created has not come from the + // system allocator. + if (tagging_disabled_) +#if HWASAN_WITH_INTERCEPTORS + return flags()->disable_allocator_tagging ? 0 : 0x10; +#else + return 0; +#endif tag_t tag; do { if (flags()->random_tags) {