Closed ramosian-glider closed 9 years ago
This happens because the frame description returned by t->GetFrameNameByAddr(addr, &offset)
in DescribeAddressIfStack() is "UNKNOWN" and doesn't contain spaces.
Reported by ramosian.glider
on 2012-11-15 12:29:22
Haha, watch the hands:
1. We enter foo(), local[10] is allocated on the fake stack and its shadow is filled
by the instrumentation code:
0x1ffffecd1040: 0xf1 0xf1 0xf1 0xf1 0x00 0x00 0x00 0x00
0x1ffffecd1048: 0x00 0xf4 0xf4 0xf4 0xf3 0xf3 0xf3 0xf3
2. We leave foo(), local[10] is deallocated and __asan_stack_free() fills the shadow
with kAsanStackAfterReturnMagic:
3. At error report time AsanThread::GetFrameNameByAddr looks for kAsanStackLeftRedzoneMagic
(0xf1), doesn't find it and returns "UNKNOWN"
4. The error reporting code crashes.
Reported by ramosian.glider
on 2012-11-15 12:37:12
Nice. Sounds like we need another kind of use-after-return shadow to delimit stack frames.
Reported by eugenis@google.com
on 2012-11-15 12:41:35
Fixed in r168040.
Reported by ramosian.glider
on 2012-11-15 14:00:03
Reported by ramosian.glider
on 2012-11-15 14:00:24
Fixed
Fixed for real in r168046.
Reported by ramosian.glider
on 2012-11-15 16:22:34
Adding Project:AddressSanitizer as part of GitHub migration.
Reported by ramosian.glider
on 2015-07-30 09:13:40
Originally reported on Google Code with ID 126
Reported by
ramosian.glider
on 2012-11-15 12:19:49