wukenaihe / google-breakpad

Automatically exported from code.google.com/p/google-breakpad
0 stars 0 forks source link

Stacks truncated on win32 #165

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
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

Attachments:

GoogleCodeExporter commented 9 years ago
Checked in at [163].

Original comment by mmento...@gmail.com on 8 May 2007 at 8:58