Unable to find error causing "active claims out of time limit"

I get the following crash log, which shows that my application has “active claims in a valid time”. My application is an application for streaming audio. A failure only occurs when the application is in the background and does NOT broadcast any audio content.

NOTES:

  • I guaranteed that beginBackgroundTaskWithExpirationHandler in applicationDidEnterBackground has the corresponding endBackgroundTask in applicationWillEnterForeground.
  • All network connections are in its stream, not in the main stream.
  • When the application is in the background, no thread is trying to access the network.
  • The error is random and cannot be duplicated by switching the device to flight mode or turning off Wi-Fi.

Any suggestions on how to track this?

Here is the crash log (without binary images):

Incident Identifier: 0467A340-1FD2-4D49-9FA4-76360889976D CrashReporter Key: fdae46f133d13bdc3f043301bc008bd56155588d Hardware Model: iPhone3,1 Process: MyApp [249] Path: /var/mobile/Applications/DAA6B446-07D3-4C7C-BD44-80920338CAF4/MyApp/MyApp Identifier: MyApp Version: ??? (???) Code Type: ARM (Native) Parent Process: launchd [1] Date/Time: 2011-11-17 15:25:59.960 -0500 OS Version: iPhone OS 5.0.1 (9A405) Report Version: 104 Exception Type: 00000020 Exception Codes: 0x8badf00d Highlighted Thread: 4 Application Specific Information: MyApp[249] has active assertions beyond permitted time: {( <SBProcessAssertion: 0xfed8890> identifier: UIKitBackgroundCompletionTask process: MyApp[249] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:249 preventSuspend preventIdleSleep )} Elapsed total CPU time (seconds): 10.700 (user 10.700, system 0.000), 2% CPU Elapsed application CPU time (seconds): 0.024, 0% CPU Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0: 0 libsystem_kernel.dylib 0x3630f010 0x3630e000 + 4112 1 libsystem_kernel.dylib 0x3630f206 0x3630e000 + 4614 2 CoreFoundation 0x343d841c 0x3434b000 + 578588 3 CoreFoundation 0x343d711a 0x3434b000 + 573722 4 CoreFoundation 0x3435a4d6 0x3434b000 + 62678 5 CoreFoundation 0x3435a39e 0x3434b000 + 62366 6 GraphicsServices 0x30bdefc6 0x30bdb000 + 16326 7 UIKit 0x377db73c 0x377aa000 + 202556 8 MyApp 0x000024de main (main.m:14) 9 MyApp 0x0000249c start + 32 Thread 1 name: Dispatch queue: com.apple.libdispatch-manager Thread 1: 0 libsystem_kernel.dylib 0x3630f3b4 0x3630e000 + 5044 1 libdispatch.dylib 0x37039e78 0x3702d000 + 52856 2 libdispatch.dylib 0x37039b96 0x3702d000 + 52118 Thread 2 name: WebThread Thread 2: 0 libsystem_kernel.dylib 0x3630f010 0x3630e000 + 4112 1 libsystem_kernel.dylib 0x3630f206 0x3630e000 + 4614 2 CoreFoundation 0x343d841c 0x3434b000 + 578588 3 CoreFoundation 0x343d7154 0x3434b000 + 573780 4 CoreFoundation 0x3435a4d6 0x3434b000 + 62678 5 CoreFoundation 0x3435a39e 0x3434b000 + 62366 6 WebCore 0x3682e128 0x36786000 + 688424 7 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534 8 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208 Thread 3 name: com.apple.coremedia.player.async Thread 3: 0 libsystem_kernel.dylib 0x3631f068 0x3630e000 + 69736 1 libsystem_c.dylib 0x331aaf2e 0x3319b000 + 65326 2 libsystem_c.dylib 0x331aacaa 0x3319b000 + 64682 3 CoreMedia 0x32306000 0x32303000 + 12288 4 MediaToolbox 0x35169fba 0x35166000 + 16314 5 CoreMedia 0x32325bc6 0x32303000 + 142278 6 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534 7 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208 Thread 4 name: com.apple.NSURLConnectionLoader Thread 4: 0 libsystem_kernel.dylib 0x3630f010 0x3630e000 + 4112 1 libsystem_kernel.dylib 0x3630f206 0x3630e000 + 4614 2 CoreFoundation 0x343d841c 0x3434b000 + 578588 3 CoreFoundation 0x343d7154 0x3434b000 + 573780 4 CoreFoundation 0x3435a4d6 0x3434b000 + 62678 5 CoreFoundation 0x3435a39e 0x3434b000 + 62366 6 Foundation 0x35d5abc2 0x35d4a000 + 68546 7 Foundation 0x35d5aa8a 0x35d4a000 + 68234 8 Foundation 0x35dee59a 0x35d4a000 + 673178 9 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534 10 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208 Thread 5 name: com.apple.CFSocket.private Thread 5: 0 libsystem_kernel.dylib 0x3631f570 0x3630e000 + 71024 1 CoreFoundation 0x343dc66a 0x3434b000 + 595562 2 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534 3 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208 Unknown thread crashed with unknown flavor: 5, state_count: 1 
+6
source share
2 answers

beginBackgroundTaskWithExpirationHandler has a time limit that you can exceed. You can see how much time is being restored using the UIApplication backgroundTimeRemaining property.

0
source

You cannot rely on completing a background task when an application returns to the foreground through applicationWillEnterForeground (). iOS allows only 3 minutes to do work in the background. This is why the background task start method has an expiration handler. You should clear your task (very fast) and complete this task (via endBackgroundTask) when the expiration handler is called:

 UIBackgroundTaskIdentifier bkgndTask; --- bkgndTask = [app beginBackgroundTaskWithExpirationHandler:^{ if (bkgndTask != UIBackgroundTaskInvalid) { [[UIApplication sharedApplication] bkgndTask]; bkgndTask = UIBackgroundTaskInvalid; } }]; 
0
source

Source: https://habr.com/ru/post/901778/


All Articles