2011-11-18 6 views
6

Otrzymuję następujący dziennik awarii, który pokazuje, że moja aplikacja ma "aktywne potwierdzenia poza dozwolonym czasem". Moja aplikacja to aplikacja do strumieniowego przesyłania dźwięku. Awaria pojawia się tylko wtedy, gdy aplikacja działa w tle i nie przesyła strumieniowo żadnych treści audio.Nie można znaleźć błędu powodującego "aktywne twierdzenia poza dozwolonym czasem" crash

UWAGI:

  • I zapewnił, że beginBackgroundTaskWithExpirationHandler w applicationDidEnterBackground ma odpowiedni endBackgroundTask w applicationWillEnterForeground.
  • Wszystkie dostępy do sieci znajdują się we własnym wątku, a nie w głównym wątku.
  • Gdy aplikacja działa w tle, żaden wątek nie próbuje uzyskać dostępu do sieci.
  • Błąd jest losowy i nie można go powielić, przełączając urządzenie w tryb samolotowy lub wyłączając WiFi.

Wszelkie sugestie, jak to wyśledzić?

Oto dziennika awarii (bez obrazy binarne):

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

Oto post z kimś w której wystąpił ten sam błąd. Czy to w ogóle pomaga? http://purushukla.blogspot.com/2011/10/application-has-active-assertions.html – Jay

Odpowiedz

0

beginBackgroundTaskWithExpirationHandler ma limit czasu, który może być przekraczającej. Możesz sprawdzić, ile czasu pozostało do odtworzenia za pomocą właściwości UIApplication o wartości backgroundTimeRemaining.

0

Nie można polegać na kończeniu zadania w tle, gdy aplikacja powraca na pierwszy plan za pośrednictwem aplikacjiWillEnterForeground(). iOS pozwala tylko 3 minuty na wykonywanie pracy w tle. Z tego powodu metoda rozpoczynająca zadanie w tle ma funkcję obsługi wygaśnięcia. Zalecana porządki swoje zadanie (bardzo szybko) i zakończyć to zadanie (poprzez endBackgroundTask), gdy obsługi ważności nazywa się:

UIBackgroundTaskIdentifier bkgndTask; 
--- 
bkgndTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
    if (bkgndTask != UIBackgroundTaskInvalid) { 
     [[UIApplication sharedApplication] bkgndTask]; 
     bkgndTask = UIBackgroundTaskInvalid; 
    } 
}]; 
Powiązane problemy