I have a production app that passed the review but is crashing in production. I have connected the device to Xcode and replicated the crash and retrieved the crash log from from Xcode. The problem is, i do not understand the report. It makes no sense to me. It does not tell me for instance which line in my code where my app crashes. My question is, is this an example of an 'un-symbolicated' crash report? I do not know what a symbolicated and un-symbolicated report looks like before i even think about figuring out how to symbolicate the crash report....
according to the apple documentation(Apple Docuemtnation, under Introduction section), because I retrieved the crash report from xcode, it should be symbolicated automatically in a few seconds??? If this report is symbolicated it makes no sense to me. quite unhelpful.
Incident Identifier: 8CAEC9EB-016F-42DC-AEB7-DE0EC136F33A
CrashReporter Key: 26676d619a8d0376d5040dfe66f618918964f4d4
Hardware Model: iPhone7,1
Process: mapdocuments [427]
Path:
/private/var/containers/Bundle/Application/AFB5062A-C2A8-4106- 8A28-5B0528918E2D/mapdocuments.app/mapdocuments
Identifier: com.xxxxx.mapdocuments
Version: 13 (1)
AppStoreTools: 10B63
AppVariant: 1:iPhone7,1:12
Code Type: ARM-64 (Native)
Role: Non UI
Parent Process: launchd [1]
Coalition: com.xxxxx.mapdocuments [513]
Date/Time: 2019-03-28 01:52:16.3749 +0000
Launch Time: 2019-03-28 01:51:08.0437 +0000
OS Version: iPhone OS 12.1.4 (16D57)
Baseband Version: 7.32.00
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Application Specific Information:
abort() called
Last Exception Backtrace:
0 CoreFoundation 0x1a4531ea4
__exceptionPreprocess + 228
1 libobjc.A.dylib 0x1a3701a50
objc_exception_throw + 55
2 CoreFoundation 0x1a4438484 +[NSException
raise:format:] + 115
3 StoreKit 0x1b860fc14 -[SKPaymentQueue
addPayment:] + 675
4 mapdocuments 0x100e5c1e8 0x100dfc000 +
393704
5 mapdocuments 0x100e65ddc 0x100dfc000 +
433628
6 UIKitCore 0x1d16d2314 -[UIApplication
sendAction:to:from:forEvent:] + 95
7 UIKitCore 0x1d115fd54 -[UIControl
sendAction:to:forEvent:] + 79
8 UIKitCore 0x1d1160074 -[UIControl
_sendActionsForEvents:withEvent:] + 439
9 UIKitCore 0x1d115f074 -[UIControl
touchesEnded:withEvent:] + 567
10 UIKitCore 0x1d170ba6c -[UIWindow
_sendTouchesForEvent:] + 2471
11 UIKitCore 0x1d170ccd0 -[UIWindow
sendEvent:] + 3155
12 UIKitCore 0x1d16ebfcc -[UIApplication
sendEvent:] + 339
13 UIKitCore 0x1d17bae38
__dispatchPreprocessedEventFromEventQueue + 1619
14 UIKitCore 0x1d17bd830
__handleEventQueueInternal + 4739
15 UIKitCore 0x1d17b6320
__handleHIDEventFetcherDrain + 151
16 CoreFoundation 0x1a44c20e0
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 23
17 CoreFoundation 0x1a44c2060
__CFRunLoopDoSource0 + 87
18 CoreFoundation 0x1a44c1944
__CFRunLoopDoSources0 + 175
19 CoreFoundation 0x1a44bc810 __CFRunLoopRun +
1039
20 CoreFoundation 0x1a44bc0e0
CFRunLoopRunSpecific + 435
21 GraphicsServices 0x1a6735584 GSEventRunModal +
99
22 UIKitCore 0x1d16d0c00 UIApplicationMain +
211
23 mapdocuments 0x100e02884 0x100dfc000 + 26756
24 libdyld.dylib 0x1a3f7abb4 start + 3
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001a40c7104
__pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001a4143020
pthread_kill$VARIANT$mp + 380
2 libsystem_c.dylib 0x00000001a401ed78 abort + 140
3 libc++abi.dylib 0x00000001a36e8f78
__cxa_bad_cast + 0
4 libc++abi.dylib 0x00000001a36e9120
default_unexpected_handler+ 8480 () + 0
5 libobjc.A.dylib 0x00000001a3701e58
_objc_terminate+ 28248 () + 124
6 libc++abi.dylib 0x00000001a36f50fc
std::__terminate(void (*)+ 57596 ()) + 16
7 libc++abi.dylib 0x00000001a36f4cec _
_cxa_rethrow + 144
8 libobjc.A.dylib 0x00000001a3701c20
objc_exception_rethrow + 44
9 CoreFoundation 0x00000001a44bc14c
CFRunLoopRunSpecific + 544
10 GraphicsServices 0x00000001a6735584
GSEventRunModal + 100
11 UIKitCore 0x00000001d16d0c00
UIApplicationMain + 212
12 mapdocuments 0x0000000100e02884 0x100dfc000
+ 26756
13 libdyld.dylib 0x00000001a3f7abb4 start + 4
as viewed in Xode:
Yes, this is an unsymbolicated crash log. The problem is that a call to [-SKPaymentQueue addPayment:]
passed a bad pointer for the payment. Here's what the log is telling you:
Exception Type: EXC_CRASH (SIGABRT)
and
Application Specific Information:
abort() called
These indicate that some piece of code explicitly called a function to abort running the application. This happens because the OS detected that some bad data was given to a function and it determined it couldn't continue with the bad data, so its only choice was to abort.
The backtrace shows which functions were called to get to the abort:
Last Exception Backtrace:
0 CoreFoundation 0x1a4531ea4 __exceptionPreprocess + 228
1 libobjc.A.dylib 0x1a3701a50 objc_exception_throw + 55
2 CoreFoundation 0x1a4438484 +[NSException raise:format:] + 115
3 StoreKit 0x1b860fc14 -[SKPaymentQueue addPayment:] + 675
4 mapdocuments 0x100e5c1e8 0x100dfc000 + 393704
5 mapdocuments 0x100e65ddc 0x100dfc000 + 433628
They are in reverse order of calling. So some code in the mapdocuments
app or library called into the StoreKit
framework, specifically the -[SKPaymentQueue addPayment:]
method. That method saw that the value passed in was invalid and raised an exception. The exception was not caught using an @try
/@catch
block, so the OS aborted execution.
Unfortunately, because symbols were not provided, we don't know the exact line that called -addPayment:
with bad data. However, if you built the app, you should have the symbols for it, and I think it's possible to symbolicate a crashlog using those. I have not done it myself, though.