DescriptionIn Mozilla's crash reports, it's not uncommon to have crashes with a completely bogus instruction pointer, called from code without a useful frame pointer. We see this a lot from third-party code (plugins etc). Currently, if there's no call frame info and dereferencing %ebp fails in program evaluation, the stack walker gives up. This results in some really terrible stacks, like this one, which simply shows "0x0" as the stack for the crashing thread: http://crash-stats.mozilla.com/report/index/d6eddf4e-a71e-4efe-b796-924112090928 Jeff Muizelaar added some logic to the x86 stackwalker to scan the stack in these cases, which gets us a more useful stack in this case. I added some other logic (the InstructionAddressSeemsValid bit) which doesn't seem to help much here, since we're generally in modules without symbols anyway. Jeff also added a "trust" field to StackFrameX86, so we could identify how much the stack walker is guessing in each case. The stack produced in cases like these isn't perfect, but it gives us something, as opposed to the nothing we currently have. You can follow our train of thought here: https://bugzilla.mozilla.org/show_bug.cgi?id=519616 Additionally, I ran minidump_stackwalk on a sampling of dumps from our production crash reporting system, and diffed the output with/without this patch. The output is available here: http://people.mozilla.org/~tmielczarek/breakpad-stacks/ Mark, since you're responsible for the entire x86 stackwalker, could you take a look at this? Patch Set 1 #
Total comments: 7
MessagesTotal messages: 3
|