La aplicación falla después del primer lanzamiento

Ya tengo esta aplicación en la tienda de aplicaciones. Publicé una versión actualizada con algunos cambios. Esta aplicación está utilizando CoreData para la persistencia de datos. He probado su nueva versión antes de lanzarla en la tienda de aplicaciones, funcionaba según lo requerido. Pero después de enviarla a la tienda de aplicaciones y actualizarla desde allí, la aplicación se bloquea después de cada lanzamiento. Tengo ese informe de falla, pero no tiene ningún sentido para mí. No he cambiado nada en CoreData. Después del lanzamiento, esta aplicación muestra un UITableView y esta tablaView obtiene datos de CoreData.

Aquí está el informe del crash.

Incident Identifier: 7A9713FF-40CB-45E0-961F-F4D1B003F2B5 CrashReporter Key: 891c38a57639ab8e2bcc3012687292ce9aa818f5 Hardware Model: iPhone6,2 Process: APPName [7461] Path: /var/mobile/Applications/A9028B70-0878-40FA-944B-584B15E49B69/APPName.app/APPName Identifier: co.identifier.app Version: 2.5 (2.5) Code Type: ARM (Native) Parent Process: launchd [1] Date/Time: 2014-03-13 09:39:17.309 +0000 OS Version: iOS 7.0.6 (11B651) Report Version: 104 Exception Type: 00000020 Exception Codes: 0x000000008badf00d Highlighted Thread: 0 Application Specific Information: co.identifier.app failed to launch in time Elapsed total CPU time (seconds): 1.660 (user 1.660, system 0.000), 4% CPU Elapsed application CPU time (seconds): 0.304, 1% CPU Thread 0: 0 libsystem_kernel.dylib 0x3a161fa8 __psynch_mutexwait + 24 1 libsystem_pthread.dylib 0x3a1c6f4d _pthread_mutex_lock + 305 2 CoreData 0x2f595a91 -[_PFLock lock] + 21 3 CoreData 0x2f5a6b35 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 777 4 CoreData 0x2f5a5777 -[NSManagedObjectContext executeFetchRequest:error:] + 611 5 APPName 0x000ecc11 +[DataManager dataEntryEntity:] (DataManager.m:385) 6 APPName 0x000ebca9 +[DataManager dataForDateKey:] (DataManager.m:126) 7 APPName 0x000cff9d -[CalendarCell setDateKey:] (CalendarCell.m:820) 8 APPName 0x000bd969 -[CalendarViewController tableView:cellForRowAtIndexPath:] (CalendarViewController.m:832) 9 UIKit 0x32108311 -[UITableView _createPrepanetworkingCellForGlobalRow:withIndexPath:] + 405 10 UIKit 0x320b06c9 -[UITableView _updateVisibleCellsNow:] + 1797 11 UIKit 0x320afeed -[UITableView layoutSubviews] + 181 12 UIKit 0x31fd634f -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 343 13 QuartzCore 0x31c5c93f -[CALayer layoutSublayers] + 139 14 QuartzCore 0x31c58163 CA::Layer::layout_if_needed(CA::Transaction*) + 347 15 QuartzCore 0x31c57ff5 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 13 16 QuartzCore 0x31c57a09 CA::Context::commit_transaction(CA::Transaction*) + 225 17 QuartzCore 0x31c5781b CA::Transaction::commit() + 311 18 UIKit 0x32055a37 -[UIApplication _reportAppLaunchFinished] + 39 19 UIKit 0x32040edb -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 1643 20 UIKit 0x31fdba03 -[UIApplication handleEvent:withNewEvent:] + 3139 21 UIKit 0x31fdacf9 -[UIApplication sendEvent:] + 69 22 UIKit 0x3204031d _UIApplicationHandleEvent + 661 23 GraphicsServices 0x344ba76b _PurpleEventCallback + 607 24 GraphicsServices 0x344ba353 PurpleEventCallback + 31 25 CoreFoundation 0x2f81c775 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 33 26 CoreFoundation 0x2f81c70f __CFRunLoopDoSource1 + 343 27 CoreFoundation 0x2f81aedb __CFRunLoopRun + 1403 28 CoreFoundation 0x2f78546d CFRunLoopRunSpecific + 521 29 CoreFoundation 0x2f78524f CFRunLoopRunInMode + 103 30 UIKit 0x3203f5bf -[UIApplication _run] + 759 31 UIKit 0x3203a841 UIApplicationMain + 1133 32 APPName 0x000b6ba7 main (main.m:11) 33 libdyld.dylib 0x3a0abab5 start + 1 

Este locking se produce en todos los dispositivos que actualizan la aplicación y esto no se reproduce en las testings de simulación o en la generación de testings a través de la distribución testFlight.

De http://www.raywenderlich.com/23704/demystifying-ios-application-crash-logs

Estos son algunos de los códigos de exception más comunes: 0x8badf00d: ¡Lee como "comió mala comida"! (Si entrecierra los ojos y reemplaza los dígitos con caracteres alfabéticos.: P) Este código indica que iOS finalizó una aplicación porque se produjo un time de espera del perro guardián. Básicamente, la aplicación tomó demasiado time para iniciar, terminar o responder a los events del sistema.

El locking se debe a una larga espera, lo que lo está causando está en 1 de 321 elementos de tareas enumerados en el logging.

Realmente tengo curiosidad sobre tus events de envío / event handling elementos de evento en el logging. ¿Hay alguna posibilidad de que estés esperando algo antes de iniciar rootViewController? … podría ser datos básicos, pero si hay algo muy malo, espero que ocurra otro error en vez de esperar.

Como Phillip dijo en el comentario, la razón de este locking se debe al perro guardián.
Si su aplicación está atrapada en el método -applicationDidFinishLauchingWithOptions: durante mucho time, el sistema lo mata.
La razón es que probablemente esté haciendo una tarea de time cara en el hilo principal dentro de este método, que podría ser una migration, copyr o eliminar una gran cantidad de files.
Nunca experimentaste en tus testings porque probablemente usaste poca cantidad de datos o porque en el modo de debugging, el perro guardián no está activo (no estoy seguro).
Lamentablemente, creo que debería lanzar otra versión tan pronto como sea posible para solucionarlo, la solución podría ser lanzar esa tarea de larga ejecución en un hilo de background. Para evitar esos problemas, siempre intente actualizar una aplicación antigua mediante la distribución ad-hoc antes de liberarla.