Symbolication is always missing contents of lastExceptionBacktrace

Xcode, MacSymbolicator and QuickLook all fail to consider the symbols from the lastExceptionBacktrace of a modern .ips crash report.

I have attached a full report as an example (I had to change its extension to txt or I wouldn't be able to upload it - change it back to ips and then use Quicklook to see its contents, which will be missing the backtrace).

Here's the excerpt that matters:

   "lastExceptionBacktrace": [
       {
           "imageOffset": 992564,
           "symbol": "__exceptionPreprocess",
           "symbolLocation": 164,
           "imageIndex": 13
       },
       {
           "imageOffset": 106164,
           "symbol": "objc_exception_throw",
           "symbolLocation": 60,
           "imageIndex": 25
       },
       {
           "imageOffset": 274836,
           "symbol": "-[__NSDictionaryM setObject:forKeyedSubscript:]",
           "symbolLocation": 1176,
           "imageIndex": 13
       },

This trace is missing from a symbolicated report - I only get to see the main threads. Here's the start of that report:

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               Find Any File [2616]
Path:                  /Applications/Find Any File.app/Contents/MacOS/Find Any File
Identifier:            org.tempel.findanyfile
Version:               2.4.1 (355)
Code Type:             ARM-64 (Native)
Parent Process:        launchd [1]
User ID:               0

Date/Time:             2024-01-09 11:31:33.8066 -0600
OS Version:            macOS 14.3 (23D5043d)
Report Version:        12
Anonymous UUID:        E3DD5ECE-F28C-31BA-A2EA-DE39D4284163


Time Awake Since Boot: 990 seconds

System Integrity Protection: enabled

Crashed Thread:        11  Dispatch queue: Folder size calc (Macintosh HD) (QOS: UNSPECIFIED)

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Termination Reason:    Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process:   Find Any File [2616]

Application Specific Information:
abort() called


Thread 0::  Dispatch queue: com.apple.main-thread
0   CoreAutoLayout                	       0x18cecbdd8 -[NSISEngine hasValue:forEngineVar:] + 284
1   AppKit                        	       0x187f51894 NSViewActuallyUpdateFrameFromLayoutEngine + 128
2   AppKit                        	       0x187f11790 -[NSView layout] + 636

Contrary to this, when I get a similar crash report from an older macOS version where it still uses the older .crash instead of .ips files, I get to see the backtrace and can symbolicate it as expected.

This seems to be a major bug in the symbolicator for ips files, and it's been around for years. I'm surprised that this is still not taken care of. Am I the only one who's noticing this?

Replies

Yeah, that’s weird. I ran your .ips file through an internal tool and it picks up the Last Exception Backtrace section just fine:

Last Exception Backtrace:
0   com.apple.CoreFoundation … __exceptionPreprocess + 164 (/AppleInternal/Library/BuildRoots/a7af10cf-9bcb-11e…
1   libobjc.A.dylib          … objc_exception_throw + 60 (/AppleInternal/Library/BuildRoots/86f06109-8de6-11ee-…
2   com.apple.CoreFoundation … -[__NSDictionaryM setObject:forKeyedSubscript:] + 1176 (/AppleInternal/Library/B…
3   org.tempel.findanyfile   …

Please file a bug about this, and then post your bug number here, just for the record.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"