Closed Bug 1599019 Opened 5 years ago Closed 4 years ago

[siglist] Add -[NSApplication _crashOnException:] to the prefix list

Categories

(Socorro :: Signature, task, P2)

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: gsvelto, Assigned: willkg)

Details

Attachments

(1 file)

Thanks to bug 1371390 we're getting much better crashes on macOS now... but we need to tell them apart. There's at least two stacks hiding behind this signature:

-[NSApplication _crashOnException:]

This is one which looks like it's related to CoreAnimation: https://crash-stats.mozilla.com/report/index/b3ddba51-86df-4a80-918e-e9b3b0191125

0 	AppKit 	-[NSApplication _crashOnException:]
1 	AppKit 	__65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke
2 	CoreFoundation 	___CFXPCCreateCFObjectFromXPCObject_block_invoke
3 	CoreFoundation 	CFRunLoopRemoveObserver
4 	CoreFoundation 	__CFRunLoopRun
5 	CoreFoundation 	__CFTSRToDispatchTime
6 	HIToolbox 	RunCurrentEventLoopInMode
7 	HIToolbox 	ReceiveNextEventCommon
8 	HIToolbox 	_BlockUntilNextEventMatchingListInModeWithFilter
9 	AppKit 	_DPSNextEvent
10 	AppKit 	-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]

And this is another, having to do with displaying strings (maybe?): https://crash-stats.mozilla.com/report/index/4a850fbe-360b-465d-bba6-57c3d0191121

0 	AppKit 	-[NSApplication _crashOnException:]
1 	AppKit 	__37+[NSDisplayCycle currentDisplayCycle]_block_invoke.31
2 	CoreFoundation 	CFStringFold
3 	CoreFoundation 	CFStringFold
4 	CoreFoundation 	CFCharacterSetIsCharacterMember
5 	CoreFoundation 	CFStringCapitalize
6 	HIToolbox 	RunCurrentEventLoopInMode
7 	HIToolbox 	ReceiveNextEventCommon
8 	HIToolbox 	_BlockUntilNextEventMatchingListInModeWithFilter
9 	AppKit 	_DPSNextEvent
10 	AppKit 	-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]

Working on this now.

Assignee: nobody → willkg
Status: NEW → ASSIGNED
Priority: -- → P2

I'm assuming we want to build a signature that ends in a XUL frame. For both of these crash reports, we're going to have to add a bunch of the intermediary frames and the names are so long that I think the signature will get truncated.

Is it the goal to build a signature for these crash reports that ends in a XUL frame? Or is it sufficient to build a signature of just the first few frames?

Flags: needinfo?(gsvelto)

To my mind, all you need to do is go back to a stack frame whose "signature" isn't already in your prefix list. So in gsvelto's example from comment 0, you'd go back to __65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke or __37+[NSDisplayCycle currentDisplayCycle]_block_invoke.31. Each of these is quite distinctive, and sufficient to give you a general idea of what's going wrong (a CA "transaction" in the first case, and something to do with displays in the second).

There are other signatures that are very generic (like __cxa_rethrow), but which aren't yet in the prefix list. I'll dig around and open a bug on each of them, using this bug as a template.

What Steven said; this is a loop we call from Gecko but which runs in Apple code so the Gecko code isn't interesting but the second frame is because it tells you what's going on. Note that we also have bug 1579688 to see if we can make these signatures better by extracting the root crash reason from the exception handler. :KrisWright had a look but IIRC she couldn't find an easy solution.

Flags: needinfo?(gsvelto)

Cool. I'll add the following three items to the prefix list:

  • -[NSApplication _crashOnException:]
  • __65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke
  • __37+[NSDisplayCycle currentDisplayCycle]_block_invoke.31

Thanks!

Oops, I meant for you only to add -[NSApplication _crashOnException:] to the prefix list.

But maybe I've misunderstood what the prefix list is. I've assumed that it's a list of "signatures" that aren't distinctive to stand on their own. They need to be used in combination with others that are more distinctive.

So, in gsvelto's example, we'd end up with crash stacks with either of the following signatures:

    -[NSApplication _crashOnException:] | __65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke
    -[NSApplication _crashOnException:] | __37+[NSDisplayCycle currentDisplayCycle]_block_invoke.31

Ahh... ok. The summary says "NSApplication ... and other functions" and apparently I didn't understand the followup comments.

The signature generation documentation is here:

https://socorro.readthedocs.io/en/latest/signaturegeneration.html

That covers how it works, what the files do, and how to test signature generation changes.

I'll fix the PR now. Thanks!

(In reply to Will Kahn-Greene [:willkg] ET needinfo? me from comment #8)

Ahh... ok. The summary says "NSApplication ... and other functions" and apparently I didn't understand the followup comments.

Sorry, my mistake, I must have copy-pasted the title from a similar bug blushes

Summary: [siglist] Add -[NSApplication _crashOnException:] and other functions to the prefix list → [siglist] Add -[NSApplication _crashOnException:] to the prefix list

willkg merged PR #5041: "bug 1599019: add NSApplication functions to prefix list" in 2437f12.

I'll push this to prod on Monday, December 2nd. We can reprocess crash reports then if that helps.

I'll dig around and open a bug on each of them, using this bug as a template.

I just added fourteen of them :-) I found them by looking through the lists of Mac topcrashers.

I just pushed this to prod in bug #1600745.

Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: