Index: compiler-rt/lib/asan/asan_activation.cc =================================================================== --- compiler-rt/lib/asan/asan_activation.cc +++ compiler-rt/lib/asan/asan_activation.cc @@ -16,8 +16,10 @@ #include "asan_allocator.h" #include "asan_flags.h" #include "asan_internal.h" +#include "asan_mapping.h" #include "asan_poisoning.h" #include "asan_stack.h" +#include "sanitizer_common/sanitizer_common.h" #include "sanitizer_common/sanitizer_flags.h" namespace __asan { @@ -110,8 +112,9 @@ AllocatorOptions disabled = asan_deactivated_flags.allocator_options; disabled.quarantine_size_mb = 0; disabled.thread_local_quarantine_size_kb = 0; - disabled.min_redzone = 16; // Redzone must be at least 16 bytes long. - disabled.max_redzone = 16; + // Redzone must be at least Max(16, granularity) bytes long. + disabled.min_redzone = Max(16, (int)SHADOW_GRANULARITY); + disabled.max_redzone = Max(16, (int)SHADOW_GRANULARITY); disabled.alloc_dealloc_mismatch = false; disabled.may_return_null = true; ReInitializeAllocator(disabled); Index: compiler-rt/lib/asan/asan_flags.cc =================================================================== --- compiler-rt/lib/asan/asan_flags.cc +++ compiler-rt/lib/asan/asan_flags.cc @@ -70,6 +70,8 @@ } Flags *f = flags(); f->SetDefaults(); + if (f->redzone < (int)SHADOW_GRANULARITY) + f->redzone = SHADOW_GRANULARITY; FlagParser asan_parser; RegisterAsanFlags(&asan_parser, f);