Aplicación de iOS que aumenta 0x8badf00d solo en algunos dispositivos aleatorios

Posible duplicado:
Me aparece el error 0x8badf00d en la aplicación de iPhone y no es el sospechoso habitual

Esta es mi primera publicación aquí, así que si crees que estoy haciendo algo mal, por favor díganme; D

En primer lugar, he estado investigando sin éxito, y no puedo entender qué está sucediendo.

Estoy desarrollando una aplicación universal y ha funcionado bien en todos los dispositivos que probé (iPhone 3GS, iPhone 4, iPhone 4S, iPad 2 y iPod Touch 4G). Pero algunos clientes han informado que la aplicación se cierra en el lanzamiento (también en diferentes models y versiones de iOS, por lo que parece que no hay un factor común. Quiero decir, la aplicación no falla solo en un model de dispositivo específico / versión de iOS).

Uno de ellos fue tan amable que me dio el reportero del crash. Parecía ser un problema común 0x8badf00d (tendré que optimizar el inicio de alguna manera para que didFinishLaunchingWithOptions regrese lo más rápido posible, lo sé). Reinició el dispositivo, cerró las otras aplicaciones en segundo plano / suspendió y luego funcionó. Aquí está ese reportero del crash (no sé por qué no se ha simbolizado con el mismo grado que el segundo reportero del crash publicado a continuación. Lo importé en el organizador Xcode y tengo los files necesarios para simbolizar):

Date/Time: 2012-05-15 00:42:19.074 +0200 OS Version: iPhone OS 5.0.1 (9A405) Report Version: 104 Exception Type: 00000020 Exception Codes: 0x8badf00d Highlighted Thread: 0 Application Specific Information: com.myApp.free failed to resume in time Elapsed total CPU time (seconds): 2.400 (user 2.400, system 0.000), 12% CPU Elapsed application CPU time (seconds): 0.073, 0% CPU Last Exception Backtrace: 0 0x3293a8bf + 848537791 1 0x356021e5 + 895492581 2 0x32883b6b + 847788907 3 myApp 0x0000a82d -[PhoneViewController requestFinished:] (PhoneViewController.m:1679) 4 0x3289922b + 847876651 5 myApp 0x0002a0b1 -[ASIHTTPRequest reportFinished] (ASIHTTPRequest.m:2028) 6 0x3289922b + 847876651 7 0x31fc2757 + 838608727 8 0x3290eb03 + 848358147 9 0x3290e365 + 848356197 10 0x3290d075 + 848351349 11 0x328904dd + 847840477 12 0x328903a5 + 847840165 13 0x335a8fcd + 861573069 14 0x36953743 + 915748675 15 myApp 0x000033af main (main.m:27) 16 myApp 0x00003368 0x1000 + 9064 Thread 0: 0 ??? 0x3465c32c 0 + 879084332 1 ??? 0x35e77fe6 0 + 904364006 2 ??? 0x336cbf66 0 + 862764902 3 ??? 0x336c9348 0 + 862753608 4 ??? 0x356022de 0 + 895492830 5 ??? 0x336c93c0 0 + 862753728 6 ??? 0x336c944c 0 + 862753868 7 ??? 0x336ca820 0 + 862758944 8 ??? 0x35602230 0 + 895492656 9 ??? 0x32890540 0 + 847840576 10 ??? 0x328903a0 0 + 847840160 11 ??? 0x335a8fc8 0 + 861573064 12 ??? 0x3695373e 0 + 915748670 13 myApp 0x000033aa main (main.m:27) 14 myApp 0x00003364 0x1000 + 9060 

Más tarde, uno de mis amigos trajo un iPhone 4 en el que la aplicación no funcionaba, al parecer por el mismo problema. El reportero del crash también mostró 0x8badf00d, pero la solución anterior de reinicio no funcionó. Además, hubo una diferencia entre estos dos lockings: el primero se estrelló en unos segundos mientras aparecía la image de bienvenida, mientras que el segundo tardaba mucho más (hice varios bashs y siguió siendo más lento que el primero). Conecté el iPhone para ver lo que sucedía en la console Xcode (publicado algunas líneas después del reportero del crash). Aquí está el reportero del crash …

 Date/Time: 2012-05-15 11:57:30.227 +0200 OS Version: iPhone OS 5.1 (9B176) Report Version: 104 Exception Type: 00000020 Exception Codes: 0x8badf00d Highlighted Thread: 0 Application Specific Information: com.myApp.free failed to launch in time Elapsed total CPU time (seconds): 12.410 (user 12.410, system 0.000), 63% CPU Elapsed application CPU time (seconds): 7.302, 37% CPU Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0: 0 libsystem_kernel.dylib 0x35069dcc __open + 8 1 DataDetectorsCore 0x30c8ca60 DDmmap + 8 2 DataDetectorsCore 0x30c860ea DDCacheCreateFromFileAtPathWithExtraChecks + 14 3 DataDetectorsCore 0x30c860b8 DDCacheCreateFromSystemCache + 1252 4 DataDetectorsCore 0x30c85a16 DDScannerCreateWithType + 14 5 DataDetectorsCore 0x30c85aaa DDScannerCreate + 6 6 Foundation 0x3118cac8 -[NSDataDetector initWithTypes:error:] + 960 7 Foundation 0x3118c6ec +[NSDataDetector dataDetectorWithTypes:error:] + 44 8 myApp 0x00004c0c -[PhoneViewController getTelfNumbers] (PhoneViewController.m:213) 9 myApp 0x00007062 -[PhoneViewController viewDidLoad] (PhoneViewController.m:864) 10 UIKit 0x32479e3e -[UIViewController awakeFromNib] + 106 11 UIKit 0x3250c2ec -[UINib instantiateWithOwner:options:] + 1236 12 UIKit 0x3247a4ac -[UIViewController _loadViewFromNibNamed:bundle:] + 240 13 UIKit 0x32357dfa -[UIViewController loadView] + 82 14 UIKit 0x322cddb8 -[UIViewController view] + 44 15 UIKit 0x3232d7de -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 86 16 UIKit 0x3232d77c -[UITabBarController transitionFromViewController:toViewController:] + 24 17 UIKit 0x3232d0b6 -[UITabBarController _setSelectedViewController:] + 294 18 UIKit 0x3232cdea -[UITabBarController setSelectedIndex:] + 234 19 myApp 0x00003f1e -[AppDelegate application:didFinishLaunchingWithOptions:] (AppDelegate.m:294) 20 UIKit 0x322cce4c -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1176 21 UIKit 0x322c697e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 402 22 UIKit 0x32294c64 -[UIApplication handleEvent:withNewEvent:] + 1004 23 UIKit 0x32294708 -[UIApplication sendEvent:] + 48 24 UIKit 0x322940dc _UIApplicationHandleEvent + 5820 25 GraphicsServices 0x364c9224 PurpleEventCallback + 876 26 CoreFoundation 0x3524a51c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32 27 CoreFoundation 0x3524a4be __CFRunLoopDoSource1 + 134 28 CoreFoundation 0x3524930c __CFRunLoopRun + 1364 29 CoreFoundation 0x351cc49e CFRunLoopRunSpecific + 294 30 CoreFoundation 0x351cc366 CFRunLoopRunInMode + 98 31 UIKit 0x322c5a0c -[UIApplication _run] + 544 32 UIKit 0x322c2e76 UIApplicationMain + 1074 33 myApp 0x000033a8 main (main.m:27) 34 myApp 0x00003360 0x1000 + 9056 

… y aquí las líneas lanzadas en la console:

 2012-05-16 10:52:26.440 myApp[315:707] DDCache: mmap failed with error 12 2012-05-16 10:52:26.444 myApp[315:707] DataDetectorsCore: mmapping the cache file failed 2012-05-16 10:52:26.466 myApp[315:707] DDCache: mmap failed with error 12 2012-05-16 10:52:26.470 myApp[315:707] DataDetectorsCore: mmapping the cache file failed 2012-05-16 10:52:26.485 myApp[315:707] DDCache: mmap failed with error 12 2012-05-16 10:52:26.490 myApp[315:707] DataDetectorsCore: mmapping the cache file failed 2012-05-16 10:52:26.509 myApp[315:707] DDCache: mmap failed with error 12 2012-05-16 10:52:26.514 myApp[315:707] DataDetectorsCore: mmapping the cache file failed 2012-05-16 10:52:26.529 myApp[315:707] DDCache: mmap failed with error 12 2012-05-16 10:52:26.533 myApp[315:707] DataDetectorsCore: mmapping the cache file failed 2012-05-16 10:52:26.548 myApp[315:707] DDCache: mmap failed with error 12 [...] (always the same two lines) 

No tengo ni idea de qué hacer ahora. La mayor parte de los dispositivos lanzó la aplicación sin problemas, otra parte de los dispositivos tuvo la 'mala comida' que desapareció después de reiniciar / cerrar algunas aplicaciones, y algunos (por ahora, uno de nuestros clientes y uno de nuestros dispositivos) pueden No lo inicie incluso reiniciar / cerrar aplicaciones.

Como dije anteriormente, parece que no es el caso de un dispositivo / model específico de iOS ni la versión de iOS. Lo más extraño es que Apple validó mi aplicación y no informaron ningún error o falla. Bueno, de hecho lo hicieron, rechazaron el primer file binary que subí porque no tenía Info.plist, así que funcionó cuando se realizó la debugging, pero no funcionó cuando se ejecutó como una aplicación final. Eso fue fijo, pero te lo dejé saber por si acaso está relacionado.

¿Alguna idea?

¡Gracias de antemano!

PD: No soy un hablante nativo de inglés, así que si hay algo raro que no entiendas no dudes en preguntar e intentaré explicarlo nuevamente con otras palabras.

Un posible motivo de diferencias podría ser la cantidad de datos con los que está trabajando.

Como ya dijiste, probablemente deberías optimizar tu inicio. Estás cargando numbers de teléfono, ¿verdad? Si esto puede llevar algún time, intente iniciar y mostrar PhoneViewController con un indicador de actividad o similar, luego inicie un hilo para cargar los datos asincrónicamente y actualice la vista cuando termine.