Process has active claims outside of the iOS time limit
I have an application built with Cordova and it has some tasks in the background. The problem is I am getting random crashes and I cannot figure out what is wrong.
I am getting the following exception:
Exception Type: 00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread: 2
Application Specific Information:
<BKNewProcess: 0x1758f950; com.app; pid: 2675; hostpid: -1> has active assertions beyond permitted time:
{(
<BKProcessAssertion: 0x17692970> id: 2675-CA057A50-06BF-4BA1-9F0C-7641112B945E name: Called by MyApp, from unknown method process: <BKNewProcess: 0x1758f950; gbi.cro; pid: 2675; hostpid: -1> permittedBackgroundDuration: 180.000000 reason: finishTask owner pid:2675 preventSuspend preventIdleSleep preventSuspendOnSleep ,
<BKProcessAssertion: 0x17697c30> id: 2675-A03FFC10-1D0A-4BDC-BF64-61358346530E name: Called by MyApp, from unknown method process: <BKNewProcess: 0x1758f950; gbi.cro; pid: 2675; hostpid: -1> permittedBackgroundDuration: 180.000000 reason: finishTask owner pid:2675 preventSuspend preventIdleSleep preventSuspendOnSleep
)}
And stream 2:
Thread 2 name: com.apple.NSURLConnectionLoader
Thread 2:
0 libsystem_kernel.dylib 0x30ae3518 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x30ae330c mach_msg + 36
2 CoreFoundation 0x227d1596 __CFRunLoopServiceMachPort + 142
3 CoreFoundation 0x227cfb5c __CFRunLoopRun + 1012
4 CoreFoundation 0x2271cb2c CFRunLoopRunSpecific + 472
5 CoreFoundation 0x2271c93e CFRunLoopRunInMode + 102
6 CFNetwork 0x222d178a +[NSURLConnection(Loader) _resourceLoadLoop:] + 482
7 Foundation 0x2351e996 __NSThread__main__ + 1114
8 libsystem_pthread.dylib 0x30b75e64 _pthread_body + 136
9 libsystem_pthread.dylib 0x30b75dd6 _pthread_start + 114
10 libsystem_pthread.dylib 0x30b73b80 thread_start + 4
I have the whole trail, but it's so big, so if anyone needs any information, let me know.
thank
+3
source to share
1 answer
This problem is annoying, difficult to debug over breakpoints, I suggest you try some trick for app retirement in the following approach to apply for more time from the system:
__block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:backgroundTaskIdentifier];
backgroundTaskIdentifier = backgroundTaskIdentifier;
}];
Also, take a look at Apple: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
+1
source to share