Index: compiler-rt/trunk/lib/asan/asan_errors.h =================================================================== --- compiler-rt/trunk/lib/asan/asan_errors.h +++ compiler-rt/trunk/lib/asan/asan_errors.h @@ -279,13 +279,20 @@ }; struct ErrorInvalidPointerPair : ErrorBase { - uptr pc, bp, sp, p1, p2; + uptr pc, bp, sp; + AddressDescription addr1_description; + AddressDescription addr2_description; // VS2013 doesn't implement unrestricted unions, so we need a trivial default // constructor ErrorInvalidPointerPair() = default; - ErrorInvalidPointerPair(u32 tid, uptr pc_, uptr bp_, uptr sp_, uptr p1_, - uptr p2_) - : ErrorBase(tid), pc(pc_), bp(bp_), sp(sp_), p1(p1_), p2(p2_) {} + ErrorInvalidPointerPair(u32 tid, uptr pc_, uptr bp_, uptr sp_, uptr p1, + uptr p2) + : ErrorBase(tid), + pc(pc_), + bp(bp_), + sp(sp_), + addr1_description(p1, 1, /*shouldLockThreadRegistry=*/false), + addr2_description(p2, 1, /*shouldLockThreadRegistry=*/false) {} void Print(); }; Index: compiler-rt/trunk/lib/asan/asan_errors.cc =================================================================== --- compiler-rt/trunk/lib/asan/asan_errors.cc +++ compiler-rt/trunk/lib/asan/asan_errors.cc @@ -271,12 +271,13 @@ const char *bug_type = "invalid-pointer-pair"; Decorator d; Printf("%s", d.Warning()); - Report("ERROR: AddressSanitizer: invalid-pointer-pair: %p %p\n", p1, p2); + Report("ERROR: AddressSanitizer: invalid-pointer-pair: %p %p\n", + addr1_description.Address(), addr2_description.Address()); Printf("%s", d.EndWarning()); GET_STACK_TRACE_FATAL(pc, bp); stack.Print(); - PrintAddressDescription(p1, 1, bug_type); - PrintAddressDescription(p2, 1, bug_type); + addr1_description.Print(); + addr2_description.Print(); ReportErrorSummary(bug_type, &stack); }