Consider the crashing thread’s backtrace:
Thread 0 Crashed:
0 libsystem_kernel.dylib … __pthread_kill + 8 (:-1)
1 libsystem_pthread.dylib … pthread_kill + 268 (pthread.c:1670)
2 libsystem_c.dylib … abort + 180 (abort.c:118)
3 libc++abi.dylib … abort_message + 132 (:-1)
4 libc++abi.dylib … demangling_terminate_handler() + 320
5 libobjc.A.dylib … _objc_terminate() + 160 (objc-exception.mm:5…
6 libc++abi.dylib … std::__terminate(void (*)()) + 16 (:-1)
7 libc++abi.dylib … std::terminate() + 56 (:-1)
8 libdispatch.dylib … _dispatch_client_callout + 40 (object.m:563)
9 libdispatch.dylib … _dispatch_block_invoke_direct + 264 (queue.c…
10 FrontBoardServices … __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__…
Your app is crashing due to an unhandled language exception. Specifically, frames 7 through 5 are all typically seen in such situations.
Frame 8 is interesting. That code is part of Darwin; see here. Dispatch has logic to catch language exceptions thrown by the blocks that it runs and terminate the process.
So, it seems that FrontBoard is running a block on one of its queues (frame 10), that’s travelled through some Dispatch machinery (frames 8 and 9), which has called the block, which has thrown an exception, after which Dispatch has deliberately terminated the process.
Normally in situations like this there’s a Last Exception Backtrace
section in the crash report. The most likely reason that’s missing is that this was a C++ exception. Those don’t generate this info; see this thread for more on that.
There’s two possibilities here. The first is that this exception was thrown by system code, in which this is most definitely a bug. System code should not be throwing language exceptions like this.
It’s also possible that this exception was thrown by your code. Do you use a lot of C++ in your product?
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"