Closed Bug 559077 Opened 10 years ago Closed 3 years ago

signature detection for EXCEPTION_STACK_OVERFLOW should be smarter

Categories

(Socorro :: General, task)

task
Not set

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: timeless, Unassigned)

Details

consider bug 559074

bp-8645163f-3f7b-4423-9871-5ac9e2100412

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:
http://code.google.com/p/google-breakpad/source/detail?r=672

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.
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.