2011-11-18 6 views
6

Viene visualizzato il seguente registro di arresto anomalo che mostra che la mia app ha "asserzioni attive oltre il tempo consentito". La mia app è un'app di streaming audio. L'arresto anomalo si verifica solo quando l'app si trova in background e NON esegue lo streaming di alcun contenuto audio.Impossibile trovare il bug che causa l'arresto anomalo di "asserzioni attive oltre il tempo consentito"

NOTE:

  • ho garantito che beginBackgroundTaskWithExpirationHandler in applicationDidEnterBackground ha un corrispondente endBackgroundTask in applicationWillEnterForeground.
  • Tutti gli accessi alla rete sono sul loro thread e non sul thread principale.
  • Quando l'app è sullo sfondo, non c'è alcun tentativo da parte di alcun thread di accedere alla rete.
  • L'errore è casuale e non può essere duplicato passando alla modalità aereo o spegnendo WiFi.

Qualche suggerimento su come rintracciarlo?

Ecco il crash log (senza immagini binarie):

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 
+0

Ecco un post da qualcun altro che ha incontrato lo stesso errore. Aiuta affatto? http://purushukla.blogspot.com/2011/10/application-has-active-assertions.html – Jay

risposta

0

beginBackgroundTaskWithExpirationHandler ha un limite di tempo che si può essere in eccesso. Puoi vedere quanto tempo è rimasto con la proprietà backgroundTimeRemaining di UIApplication.

0

Non è possibile fare affidamento sulla conclusione dell'attività in background quando l'applicazione ritorna in primo piano tramite applicationWillEnterForeground(). iOS consente solo 3 minuti per eseguire il lavoro in background. Questo è il motivo per cui il metodo di inizio dell'attività in background ha un gestore di scadenza. Si dovrebbe pulizia il vostro compito (molto rapidamente) e alla fine questo compito (via endBackgroundTask) quando il gestore di scadenza si chiama:

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