Index: lib/asan/asan_descriptions.h =================================================================== --- lib/asan/asan_descriptions.h +++ lib/asan/asan_descriptions.h @@ -132,6 +132,7 @@ bool GetHeapAddressInformation(uptr addr, uptr access_size, HeapAddressDescription *descr); bool DescribeAddressIfHeap(uptr addr, uptr access_size = 1); +bool DescribeAddressIfStack(uptr addr, uptr access_size = 1); struct StackAddressDescription { uptr addr; Index: lib/asan/asan_errors.h =================================================================== --- lib/asan/asan_errors.h +++ lib/asan/asan_errors.h @@ -110,18 +110,17 @@ struct ErrorAllocTypeMismatch : ErrorBase { const BufferedStackTrace *dealloc_stack; - HeapAddressDescription addr_description; AllocType alloc_type, dealloc_type; + uptr addr; ErrorAllocTypeMismatch() = default; // (*) - ErrorAllocTypeMismatch(u32 tid, BufferedStackTrace *stack, uptr addr, + ErrorAllocTypeMismatch(u32 tid, BufferedStackTrace *stack, uptr addr_, AllocType alloc_type_, AllocType dealloc_type_) : ErrorBase(tid, 10, "alloc-dealloc-mismatch"), dealloc_stack(stack), alloc_type(alloc_type_), - dealloc_type(dealloc_type_) { - GetHeapAddressInformation(addr, 1, &addr_description); - }; + dealloc_type(dealloc_type_), + addr (addr_) {} void Print(); }; Index: lib/asan/asan_errors.cc =================================================================== --- lib/asan/asan_errors.cc +++ lib/asan/asan_errors.cc @@ -127,13 +127,16 @@ Report("ERROR: AddressSanitizer: %s (%s vs %s) on %p\n", scariness.GetDescription(), alloc_names[alloc_type], dealloc_names[dealloc_type], - addr_description.addr); + addr); Printf("%s", d.Default()); CHECK_GT(dealloc_stack->size, 0); scariness.Print(); GET_STACK_TRACE_FATAL(dealloc_stack->trace[0], dealloc_stack->top_frame_bp); stack.Print(); - addr_description.Print(); + if (!DescribeAddressIfHeap (addr)) { + if (!DescribeAddressIfStack (addr)) + DescribeAddressIfGlobal (addr, 1, scariness.GetDescription ()); + } ReportErrorSummary(scariness.GetDescription(), &stack); Report( "HINT: if you don't care about these errors you may set "