What steps will reproduce the problem?
1. Build a binary with VC8 and optimizations that remove the frame pointer
2. Run dump_syms on the PDB
3. Collect and process a crash that walks through those functions
When VC8 compiles functions, it can avoid modifying %ebp at all... so the
program generated by MS debug is something like the following:
$T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ =
$esp $T0 4 + =
This is a perfectly valid program, which doesn't set $ebp. This means that
in StackWalkerX86::GetCallerFrame dictionary_validity.find("$ebp") will
fail, and stop walking the stack.
The attached patch removes the check for dictionary_validity.find("$ebp").
This works, but I'm not sure why the check for $ebp was added in the first
place.
Original issue reported on code.google.com by bsmedb...@gmail.com on 8 May 2007 at 5:15
Original issue reported on code.google.com by
bsmedb...@gmail.com
on 8 May 2007 at 5:15Attachments: