Reading crash log files

My app can send me crash log files via email. On Monterey I get the following data:

{“app_name”:“Mail Archiver X.debug”,“timestamp”:“2022-02-11 12:15:53.00 +0100”,“app_version”:“”,“slice_uuid”:“016e9ac7-3f43-358e-9499-02d29e7699c1”,“build_version”:“”,“platform”:1,“share_with_app_devs”:1,“is_first_party”:1,“bug_type”:“309”,“os_version”:“macOS 12.1 (21C5021h)”,“incident_id”:“9593D47B-82AF-4DB9-856A-4072D7812052”,“name”:“Mail Archiver X.debug”}
{
“uptime” : 1100000,

instead of the crash log:


Translated Report (Full Report Below)

Process: Mail Archiver X.debug [88424]
Path: /Users/USER/Documents/*/Mail Archiver X.debug.app/Contents/MacOS/Mail Archiver X.debug
Identifier: Mail Archiver X.debug
Version: ???
Code Type: X86-64 (Translated)
Parent Process: launchd [1]
User ID: 501

Date/Time: 2022-02-11 12:14:37.2477 +0100
OS Version: macOS 12.1 (21C5021h)
Report Version: 12

I get the same data when I rename the ips file to txt. How to I get the full data? I thought that Apple might have reverted to the 90s and used a resource fork. But trying to open the file with ResourceForkMBS gives me a Nil resource fork:

dim f as FolderItem = FolderItem.ShowOpenFileDialog("")
if f = Nil then Return

dim rf as ResourceForkMBS = ResourceForkMBS.Open(f, false)

Xojo 2021r2.1

Did you double clock the ips file? Youbcan try console.app to open such crashes

You may go and enjoy the new JSON format and write a little parser based on the JSON instead of the text version.

@DerkJ : yes, I can double click the ips file. But I want the files by email.

@Christian_Schmitz : I’ll try that.

Rhetorical question: why does Apple such stupidity?

1 Like

The Json can’t be parsed by Xojo. Instead it gives an InvalidJsonException “parse error: trailing garbage”.

I tried to pretty print the Json with Best JSON Pretty Print Online. There I got a similar error. I deleted the beginning of the file and got the Json parsed.

Because I made the crash with CrashNiceMBS I can located the thread and the crash itself:

But I can’t see anywhere how to get the threads and the crash stack from the threads.

I did some searching on StackOverflow. The ips files must be “symbolicated” or some such. But how do I do that in XCode?

Maybe here:

https://developer.apple.com/documentation/xcode/analyzing-a-crash-report

https://developer.apple.com/documentation/xcode/adding-identifiable-symbol-names-to-a-crash-report

Yeah, I read those, too. Both the urls have words but the words don’t have meaning. I need the idiots version: Click here, do that.

1 Like

They have left this level eons ago. no more people with those basic understanding (knowledge) exists anymore @ the infinite loop…

Because the CEO is a bean counter, not a creator. Therefore the CEO has no concept of what it is like to think, design, build and QA something, let alone make software. Which I believe is why Apple PJ doesn’t care about 3rd Party Developers like Apple BC did. I know that certain engineers do, and have complained that management couldn’t care less.

It is not uncommon for Apple to mix formats, this causes no end of problems with Notarization because I specifically request XML, but sometimes it gives me plaintext + xml.
Also: This may not technically be JSON, Apple have their own format which is close, but it isn’t JSON for instance it uses { where there should be [.

Got the problem solved:

  • High Sierra doesn’t recognize the ips format at all.
  • The gzip format I used to make the crash logs smaller was the problem. Sending the files unzipped works fine.
3 Likes