The crash report details:
Exception Type: 00000020
Exception Codes: 0x8badf00d
Highlighted Thread: 3
Application Specific Information:
MyApp[123] has active assertions beyond permitted time:
{(
<SBProcessAssertion: 0x4b52f0> identifier: CoreLocationBackgroundClient process: MyApp[579] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:123 preventSuspend preventIdleSleep
)}
Elapsed total CPU time (seconds): 13.980 (user 13.980, system 0.000), 1% CPU
Elapsed application CPU time (seconds): 0.251, 0% CPU
and thread 3 is:
Thread 3 name: com.apple.NSURLConnectionLoader
Thread 3:
0 libsystem_kernel.dylib 0x30e67004 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x30e671fa mach_msg + 50
2 CoreFoundation 0x381ea3ec __CFRunLoopServiceMachPort + 120
3 CoreFoundation 0x381e9124 __CFRunLoopRun + 876
4 CoreFoundation 0x3816c49e CFRunLoopRunSpecific + 294
5 CoreFoundation 0x3816c366 CFRunLoopRunInMode + 98
6 Foundation 0x373a7bb2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 302
7 Foundation 0x373a7a7a -[NSThread main] + 66
8 Foundation 0x3743b58a __NSThread__main__ + 1042
9 libsystem_c.dylib 0x333c972e _pthread_start + 314
10 libsystem_c.dylib 0x333c95e8 thread_start + 0
The application uses GPS. Any idea why this crash is happening?
It looks as though you’re using the wrong kind of background processing. The 600 seconds is the give-away. That suggests that you’re using the task completion API, which gives applications a finite amount of time (currently ten minutes) to finish off certain activities before they are suspended.
If you want to continue to monitor GPS location while in the background you need to use particular Core Location APIs (and set the appropriate flag in your Info.plist).