Never use frame pointer unwinding on a Windows x64 stack.
MSVC never generates code that works with frame pointer chasing, and LLVM does the same. Change-Id: I9943160d200509c079fb91394c1a5d789dc188e5 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3486523 Reviewed-by: Mark Mentovai <mark@chromium.org>
This commit is contained in:
parent
1da39e3a90
commit
88f5fc451e
1 changed files with 4 additions and 1 deletions
|
@ -289,7 +289,10 @@ StackFrame* StackwalkerAMD64::GetCallerFrame(const CallStack* stack,
|
|||
new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get()));
|
||||
|
||||
// If CFI was not available or failed, try using frame pointer recovery.
|
||||
if (!new_frame.get()) {
|
||||
// Never try to use frame pointer unwinding on Windows x64 stack. MSVC never
|
||||
// generates code that works with frame pointer chasing, and LLVM does the
|
||||
// same. Stack scanning would be better.
|
||||
if (!new_frame.get() && system_info_->os_short != "windows") {
|
||||
new_frame.reset(GetCallerByFramePointerRecovery(frames));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue