Is there a way to get more out of this crash report?

Hi


Here's what I get from users:


Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000000e7ffdefe
Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [0]
Triggered by Thread:  0


Thread 0 name:
Thread 0 Crashed:
0   Curious Robot                 0x0007ae70 0x5d000 + 122480
1   Curious Robot                 0x0007986c 0x5d000 + 116844
2   Curious Robot                 0x00182504 0x5d000 + 1201412
3   Curious Robot                 0x00064710 0x5d000 + 30480
4   Curious Robot                 0x0009e4b8 0x5d000 + 267448
5   Curious Robot                 0x00176280 0x5d000 + 1151616
6   Curious Robot                 0x0011b6fc 0x5d000 + 780028
7   Curious Robot                 0x000dd41c 0x5d000 + 525340
8   Curious Robot                 0x0010fbcc 0x5d000 + 732108
9   Curious Robot                 0x000d9770 0x5d000 + 509808
10  SpriteKit                     0x2a7310f6 -[SKRunBlock updateWithTarget:forTime:] + 166 (SKRunBlock.mm:52)
11  SpriteKit                     0x2a6d3188 SKCAction::updateWithTargetForTime(SKCNode*, double) + 48 (SKCAction.mm:224)
12  SpriteKit                     0x2a6fbb12 SKCSequence::cpp_updateWithTargetForTime(SKCNode*, double) + 114 (SKSequence.mm:84)
13  SpriteKit                     0x2a6f0fbc SKCNode::update(double, float) + 272 (SKCNode.mm:466)
14  SpriteKit                     0x2a6f1042 SKCNode::update(double, float) + 406 (SKCNode.mm:483)
15  SpriteKit                     0x2a7034f2 -[SKScene _update:] + 810 (SKScene.mm:832)
16  SpriteKit                     0x2a72a6a0 -[SKView _update:] + 1136 (SKView.mm:1937)
17  SpriteKit                     0x2a726aa8 __51-[SKView _vsyncRenderForTime:preRender:postRender:]_block_invoke.333 + 302 (SKView.mm:974)
18  SpriteKit                     0x2a725d60 -[SKView _vsyncRenderForTime:preRender:postRender:] + 636 (SKView.mm:989)
19  SpriteKit                     0x2a727f6a __29-[SKView setUpRenderCallback]_block_invoke + 290 (SKView.mm:1284)
20  SpriteKit                     0x2a767dc8 -[SKDisplayLink _callbackForNextFrame:] + 240 (SKDisplayLink.mm:344)
21  QuartzCore                     0x1feadfe0 CA::Display::DisplayLinkItem::dispatch(unsigned long long) + 112 (CADisplay.mm:1899)
22  QuartzCore                     0x1feade28 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 660 (CADisplay.mm:1334)
23  IOMobileFramebuffer           0x1f357270 IOMobileFramebufferVsyncNotifyFunc + 88 (IOMobileFramebufferLib.c:2292)
24  IOKit                         0x1d385334 IODispatchCalloutFromCFMessage + 240 (IOKitLib.c:1190)
25  CoreFoundation                 0x1d0da5b2 __CFMachPortPerform + 128 (CFMachPort.c:682)
26  CoreFoundation                 0x1d0ee37e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34 (CFRunLoop.c:1959)
27  CoreFoundation                 0x1d0edb6a __CFRunLoopDoSource1 + 338 (CFRunLoop.c:2078)
28  CoreFoundation                 0x1d0ebd70 __CFRunLoopRun + 1536 (CFRunLoop.c:3028)
29  CoreFoundation                 0x1d03b072 CFRunLoopRunSpecific + 486 (CFRunLoop.c:3113)
30  CoreFoundation                 0x1d03ae80 CFRunLoopRunInMode + 104 (CFRunLoop.c:3143)
31  GraphicsServices               0x1e7e3bfc GSEventRunModal + 156 (GSEvent.c:2245)
32  UIKit                         0x221dcace -[UIApplication _run] + 574 (UIApplication.m:2649)
33  UIKit                         0x221d7200 UIApplicationMain + 150 (UIApplication.m:4091)
34  Curious Robot                 0x00067798 0x5d000 + 42904
35  libdyld.dylib                 0x1c80650a start + 2


The thing is that SKScene update is very vague: my SpriteKit app is kinda made of updating the scenes. And there is no info what was the object of SKScene and what variables where. Opening this report in project gives nothing: debugger does not take me to a specific like of code.


Is there a way to get more info on the crash?


Thank you!

Lines 10-11 tell you that the update was executing a closure of yours that's attached to a "run" action. That may or may not give a clue as to where to look, depending on how many such actions are running at one time.


The EXC_BREAKPOINT crash is likely a deliberate (compiler-generated) crash such as attempt to unwrap a nil optional. There ought to be a log message that describes the reason for the crash.


However, the main point is that you need to symbolicate the crash report. See Tech Note TN2151 on developer.apple.com for information about how to do this. That should narrow the crash down to a particular line of your source code.

Thank you so much for the detailed answer, Quincey.


I tried to symbolicate the crash report according to the procedure. I have an ipad with the same binary, I drag the crash report into the 'device logs' and I can read it but it is the same text that I see originally in Organizer. No additional info.


Sadly i use 'runblock' a lot in my app. Like 50 times across the code. No way I can check all of them.


Is there anything else I can do?


Maybe there is a techique to prevent meaningless crash reports? Like wrap SKAction.run in something else?

You shouldn't give up on symbolicating crash reports quite so easily. In the tech note, under the heading "Symbolicating Crash Reports With Xcode" there's a list of reasons why the process might fail. Further down, there's a section on "Symbolication Troubleshooting". If you really get nowhere, you can post here saying what you tried, and perhaps someone with more detailed knowledge can jump in and help.


>> Is there anything else I can do?


Yes, you can try to replicate the problem in your own developement environment, so that you can stop in the debugger when it happens. This is not always straightforward to do, because you might have to figure out what unexpected thing your users are doing in order to do it yourself. But it's worth spending some time on, if you have no more direct way of isolating the problem.

Is there a way to get more out of this crash report?
 
 
Q