My App is crashing in some scenarios. Unable to find the reason & place of crash.
Below is crash log (iPad/iOS 8.0.2).
Hardware Model: iPad2,5
OS Version: iOS 8.0.2 (12A405)
Report Version: 105
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x306b3dfc __pthread_kill + 8
1 libsystem_pthread.dylib 0x30733d0e pthread_kill + 58
2 libsystem_c.dylib 0x30653934 abort + 72
3 libc++abi.dylib 0x2f864bb8 abort_message + 84
4 libc++abi.dylib 0x2f87e66a default_terminate_handler() + 262
5 libobjc.A.dylib 0x30052f0e _objc_terminate() + 190
6 libc++abi.dylib 0x2f87bdec std::__terminate(void (*)()) + 76
7 libc++abi.dylib 0x2f87b5ac __cxa_throw + 108
8 libobjc.A.dylib 0x30052d46 objc_exception_throw + 246
9 CoreFoundation 0x225dfe58 +[NSException raise:format:arguments:] + 100
10 Foundation 0x232af2c4 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 88
11 BaseBoard 0x270a08d8 __25-[BSAction sendResponse:]_block_invoke + 140
12 libdispatch.dylib 0x305bc99c _dispatch_barrier_sync_f_invoke + 44
13 BaseBoard 0x270a0842 -[BSAction sendResponse:] + 98
14 UIKit 0x25fd54d0 -[UIFetchContentInBackgroundAction sendResponse:] + 212
15 libdispatch.dylib 0x305b3610 _dispatch_call_block_and_release + 8
16 libdispatch.dylib 0x305b35fc _dispatch_client_callout + 20
17 libdispatch.dylib 0x305be2b2 _dispatch_main_queue_callback_4CF$VARIANT$mp + 714
18 CoreFoundation 0x225a5e5c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4
19 CoreFoundation 0x225a457c __CFRunLoopRun + 1508
20 CoreFoundation 0x224f1dac CFRunLoopRunSpecific + 472
21 CoreFoundation 0x224f1bbe CFRunLoopRunInMode + 102
22 GraphicsServices 0x2985404c GSEventRunModal + 132
23 UIKit 0x25abda2c UIApplicationMain + 1436
24 MyApp 0x000fb9f2 main (main.m:15)
25 libdyld.dylib 0x305eeaac start + 0
Thanks in advance..
The exception message that corresponds to the stack trace is:
While it's not possible to tell for sure from the stack alone, you most likely called the completionHandler passed to your app delegate's -application:performFetchWithCompletionHandler: method twice.
The background fetch is triggered by the OS, based on the value you set in setMinimumBackgroundFetchInterval: method. What you are seeing looks like the what the OS does with your app if the background fetch takes too long.
You are assigned a window of time (30 seconds) to do your work. If you don't finish, the OS kills your app with the above exception. Read more about how to extend the time needed here.
Basically, you need to ask for more time to complete your background work like this: