2011-11-18 12 views
6

Recibo el siguiente registro de bloqueo que muestra que mi aplicación tiene "aserciones activas más allá del tiempo permitido". Mi aplicación es una aplicación de transmisión de audio. El bloqueo solo se produce cuando la aplicación está en segundo plano y NO transmite contenido de audio.No se puede encontrar el error que causa el bloqueo de "aserciones activas más allá del tiempo permitido"

NOTAS:

  • I asegurado que beginBackgroundTaskWithExpirationHandler en applicationDidEnterBackground tiene una endBackgroundTask correspondiente en applicationWillEnterForeground.
  • Todos los accesos a la red están en su propio hilo y no en el hilo principal.
  • Cuando la aplicación está en segundo plano, ningún hilo intenta acceder a la red.
  • El error es aleatorio y no se puede duplicar cambiando el dispositivo al modo avión o apagando el WiFi.

¿Alguna sugerencia de cómo rastrear esto?

Aquí está el registro de bloqueo (sin imágenes binarias):

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

Aquí hay un puesto de otra persona que se encontró con el mismo error. ¿Ayuda en absoluto? http://purushukla.blogspot.com/2011/10/application-has-active-assertions.html – Jay

Respuesta

0

beginBackgroundTaskWithExpirationHandler tiene un límite de tiempo que puede estar excediendo. Puede ver cuánto tiempo se está remangando con la propiedad UIApplication de .

0

No puede confiar en finalizar su tarea en segundo plano cuando la aplicación vuelve al primer plano a través de applicationWillEnterForeground(). iOS solo permite 3 minutos para realizar el trabajo en segundo plano. Esta es la razón por la cual el método begin task de fondo tiene un controlador de caducidad. Usted debe limpiar su tarea (muy rápidamente) y terminar la tarea (a través de endBackgroundTask) cuando el manejador de caducidad se llama:

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