no puedo entender estos 2 informes de fallas

Desde que recibí comentarios sobre fallas, pero la aplicación nunca falla para mí, ahora utilizo el critterismo para cazar colisiones.

Recibí un informe que me indicó un error de mi parte. Fue fácil, ya que el nombre del método fue dado y pude ver en mi código lo que podría fallar. Hasta aquí todo bien.

Pero también tengo los siguientes dos que me desconciertan.

Para mí, parece que la aplicación se bloquea en alguna biblioteca interna de Apple. (Lo más probable es que me haya dado de comer algunas cosas rotas …)

No hay llamada de mi código en el crash, entonces, ¿dónde comienzan a search?

¿Alguien entiende estos crashs? ¿Alguna idea de cómo puedo atraparlos y tal vez get más información sobre el locking? No.1:

0 CoreFoundation 0x3585f88f __exceptionPreprocess + 162 1 libobjc.A.dylib 0x37c06259 objc_exception_throw + 32 2 CoreFoundation 0x35862a9b -[NSObject doesNotRecognizeSelector:] + 174 3 CoreFoundation 0x35861915 ___forwarding___ + 300 4 CoreFoundation 0x357bc650 _CF_forwarding_prep_0 + 48 5 UIKit 0x332f3efb -[UITableView(UITableViewInternal) _createPrepanetworkingCellForGlobalRow:withIndexPath:] + 546 6 UIKit 0x332f2f39 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 916 7 UIKit 0x332f2763 -[UITableView layoutSubviews] + 206 8 UIKit 0x33296f37 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 182 9 CoreFoundation 0x357be1fb -[NSObject performSelector:withObject:] + 42 10 QuartzCore 0x3268eaa5 -[CALayer layoutSublayers] + 216 11 QuartzCore 0x3268e6bd _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 216 12 QuartzCore 0x32692843 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 226 13 QuartzCore 0x3269257f _ZN2CA11Transaction6commitEv + 314 14 QuartzCore 0x326ba911 _ZN2CA11Transaction5flushEv + 44 15 QuartzCore 0x326ba8e3 +[CATransaction flush] + 34 16 UIKit 0x332a1fb1 _afterCACommitHandler + 52 17 CoreFoundation 0x35833b1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18 18 CoreFoundation 0x35831d57 __CFRunLoopDoObservers + 258 19 CoreFoundation 0x358320b1 __CFRunLoopRun + 760 20 CoreFoundation 0x357b54a5 CFRunLoopRunSpecific + 300 21 CoreFoundation 0x357b536d CFRunLoopRunInMode + 104 22 GraphicsServices 0x37451439 GSEventRunModal + 136 23 UIKit 0x332c1cd5 UIApplicationMain + 1080 24 Wohnungssuche 0x000d5218 start + 40 

No. 2:

 Thread: Unknown Name (Crashed) 0 libobjc.A.dylib 0x35beb5d0 objc_msgSend + 16 + 15 1 UIKit 0x39fb0541 -[UITableView(UITableViewInternal) _createPrepanetworkingCellForGlobalRow:withIndexPath:] + 409 + 408 2 UIKit 0x39f95361 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1317 + 1316 3 UIKit 0x39fac7ff -[UITableView layoutSubviews] + 207 + 206 4 UIKit 0x39f68897 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 259 + 258 5 QuartzCore 0x34ab74eb -[CALayer layoutSublayers] + 215 + 214 6 QuartzCore 0x34ab708d _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 461 + 460 7 QuartzCore 0x34ab7fb1 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 17 + 16 8 QuartzCore 0x34ab799b _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 239 + 238 9 QuartzCore 0x34ab77ad _ZN2CA11Transaction6commitEv + 317 + 316 10 QuartzCore 0x34aee7df _ZN2CA7Display11DisplayLink8dispatchEyy + 255 + 254 11 QuartzCore 0x34aee6d9 _ZN2CA7Display16IOMFBDisplayLink8callbackEP21__IOMobileFramebufferyyyPv + 65 + 64 12 IOMobileFramebuffer 0x375f0fd7 IOMobileFramebufferVsyncNotifyFunc + 155 + 154 13 IOKit 0x3282a5ad IODispatchCalloutFromCFMessage + 193 + 192 14 CoreFoundation 0x3918288b __CFMachPortPerform + 119 + 118 15 CoreFoundation 0x3918d3e7 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35 + 34 16 CoreFoundation 0x3918d38b __CFRunLoopDoSource1 + 139 + 138 17 CoreFoundation 0x3918c20f __CFRunLoopRun + 1383 + 1382 18 CoreFoundation 0x390ff23d CFRunLoopRunSpecific + 357 + 356 19 CoreFoundation 0x390ff0c9 CFRunLoopRunInMode + 105 + 104 20 GraphicsServices 0x3344933b GSEventRunModal + 75 + 74 21 UIKit 0x39fb9291 UIApplicationMain + 1121 + 1120 

¡Gracias por tu ayuda!

El punto de locking en ambos casos es el mismo:

  UIKit 0x39fb0541 -[UITableView(UITableViewInternal) _createPrepanetworkingCellForGlobalRow:withIndexPath:] + 409 + 408 

En el primer caso, la vista de tabla intentaba llamar a un método en una instancia que no implementa dicho método. El segundo locking fue causado al intentar enviar un post de basura.

Por lo tanto, la conclusión más probable es que ambos crashs son síntomas de un solo problema; tienes un object que se está liberando prematuramente o se ha liberado de forma excesiva.

En particular, la fuente de datos de la vista de tabla se publica antes o mientras se recarga una tabla.

Sospecho que UITableView está intentando llamar al método de la fuente de datos para crear una célula. Puede confirmar esto estableciendo un punto de interrupción en dicho método y mirando el rastreo de stack. Si mi apuesta es correcta, verás el método _createPrepanetworkingCellForGlobal … en el rastreo.


Sin saber detalles de su aplicación, es difícil de decir. Lo más probable es que se trate de un problema relacionado con el time entre los datos que se cargan en la pantalla y el usuario hace algo que hace que una request se cancele antes de que la vista de la tabla se cargue, provocando que su fuente de datos se desasigne debajo de la tabla (que puede ocurrir porque la vista de tabla tiene una reference de asignación a su object, una reference que no retiene).

Para intentar reproducir, enfóquese en:

• lenta connection de networking o ancho de banda variable (si su aplicación es cliente / server)

• hacer cosas que el usuario puede hacer que ocasionen que las operaciones se cancelan

• navegue rápidamente entre las vistas sin esperar a que la actualización complete el dibujo

En sus comentarios, menciona que está intentando "dos iPhones diferentes". Pruebe con otros types de dispositivo y con diferentes configuraciones de networking.