Closed Bug 559077 Opened 10 years ago Closed 3 years ago

signature detection for EXCEPTION_STACK_OVERFLOW should be smarter


(Socorro :: General, task)

Not set


(Not tracked)



(Reporter: timeless, Unassigned)


consider bug 559074


i'd like socorro to look at the first 20 frames, and the 20 frames above/below the truncation point, searching down (from small frame numbers to big frame numbers).

within each set of 20 frames, it should stop iterating when it encounters a frame it's already seen.

in my example, it should walk along and consider each frame
0     xul.dll     _cairo_traps_extract_region    
1     xul.dll     _clip_and_composite_trapezoids    
14     xul.dll     _clip_and_composite_trapezoids   
- stopping here because it's a loop.

it should then search bugzilla for summary contains any of the strings (signature from frames 0..14).

if the logic wants to be more certain of good hits, we can require 'stack_overflow' to be in the summary.

this way i can file a bug w/ a summary of:
EXCEPTION_STACK_OVERFLOW [@ _clip_and_composite_trapezoids]

instead of having to include every possible stack frame variation.
Currently, AIUI, the processor generates a single signature for a crash using a regex of frames to ignore, and another regex of frames to prepend. Once it has that string, it stores it in the DB and a separate script, running as a cron job, looks at signatures from the DB and correlates them with Bugzilla. Doing exactly what you suggest would involve adding a lot of complexity to the system. I would propose one of the following instead, which should fit in much more easily:
a) Generate a signature containing all of the repeated frames, like [@ _cairo_traps_extract_region | _clip_and_composite_trapezoids ... ] (likely to generate very long signatures)
b) Make the signature generator able to traverse the stack until it finds a repeated frame, like you suggest, but then continue to traverse the stack until it finds a non-repeated frame, and then use either the last repeated frame or the non-repeated frame (the caller) as the signature. This should produce a repeatably unique signature for a stack overflow crash.

I think b) is probably the nicer solution, since it'd avoid potentially huge signatures. What do you think?
please note that bugzilla has a fairly tiny summary limit (because i was abusing it, mostly for stacks like this).

b is fine with me if you can do it.
Note that this got broken upstream in Breakpad:

That limits the number of frames output to 1024, which means that you never get the oldest part of the stack, so you get nothing but the repeating bits.
Component: Socorro → General
Product: Webtools → Socorro
We've made several changes to work around this since and are actively investing in a better signature process elsewhere.
Closed: 3 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.