forked from OSchip/llvm-project
[Asan][Windows] Fix asan stack traces on Windows.
While implementing inline stack traces on Windows I noticed that the stack traces in many asan tests included an inlined frame that shouldn't be there. Currently we get the PC and then do a stack unwind and use the PC to find the beginning of the stack trace. In the failing tests the first thing in the stack trace is inside an inline call site that shouldn't be in the stack trace, so replace it with the PC. Differential Revision: https://reviews.llvm.org/D89996
This commit is contained in:
parent
9497e2e7d8
commit
3827effe3a
|
@ -37,6 +37,10 @@ void BufferedStackTrace::UnwindSlow(uptr pc, u32 max_depth) {
|
||||||
// Skip the RTL frames by searching for the PC in the stacktrace.
|
// Skip the RTL frames by searching for the PC in the stacktrace.
|
||||||
uptr pc_location = LocatePcInTrace(pc);
|
uptr pc_location = LocatePcInTrace(pc);
|
||||||
PopStackFrames(pc_location);
|
PopStackFrames(pc_location);
|
||||||
|
|
||||||
|
// Replace the first frame with the PC because the frame in the
|
||||||
|
// stacktrace might be incorrect.
|
||||||
|
trace_buffer[0] = pc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferedStackTrace::UnwindSlow(uptr pc, void *context, u32 max_depth) {
|
void BufferedStackTrace::UnwindSlow(uptr pc, void *context, u32 max_depth) {
|
||||||
|
|
Loading…
Reference in New Issue