iOS UIWebView falla en "WebThread"

¿Alguien capaz de ayudarme con este crash? Sucede de forma intermitente cuando se alterna entre algunas instancias de UIWebView mientras se cargan.

El locking suele ser un poco diferente, pero siempre es un fallo del "WebThread" con una traza de stack similar.

Estas son las partes relevantes de dos crashs:

 Fecha / Hora: 2011-11-08 14: 29: 01.165 -0500
 Versión del sistema operativo: iPhone OS 5.0 (9A334)
 Versión del informe: 104

 Tipo de exception: EXC_BAD_ACCESS (SIGSEGV)
 Códigos de exception: KERN_INVALID_ADDRESS a 0x00000006
 Hilo bloqueado: 4

 Nombre de subprocess 4: WebThread
 Tema 4 se estrelló:
 0 ???  0x00000006 0 + 6
 1 WebCore 0x32a36154 - [Conexión QuickLookHandleAsDelegate: didReceiveData: lengthReceived:] + 72
 2 QuickLook 0x30bee2c2 - [QLThreadInvoker connectionDidReceiveDataLengthReceived:] + 90
 3 CoreFoundation 0x3537a226 - [NSObject performSelector: withObject:] + 38
 4 Foundation 0x32ce2752 __NSThreadPerformPerform + 346
 5 CoreFoundation 0x353efafe __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 10
 6 CoreFoundation 0x353ef2ca __CFRunLoopDoSources0 + 210
 7 CoreFoundation 0x353ee070 __CFRunLoopRun + 648
 8 CoreFoundation 0x353714d8 CFRunLoopRunSpecific + 296
 9 CoreFoundation 0x353713a0 CFRunLoopRunInMode + 100
 10 WebCore 0x324c912a _ZL12RunWebThreadPv + 398
 11 libsystem_c.dylib 0x35ba1c18 _pthread_start + 316
 12 libsystem_c.dylib 0x35ba1ad4 thread_start + 4
 Fecha / Hora: 2011-11-08 15: 09: 01.410 -0500
 Versión del sistema operativo: iPhone OS 5.0 (9A334)
 Versión del informe: 104

 Tipo de exception: EXC_BAD_ACCESS (SIGSEGV)
 Códigos de exception: KERN_INVALID_ADDRESS a 0x00000034
 Hilo bloqueado: 4

 Nombre de subprocess 4: WebThread
 Tema 4 se estrelló:
 0 ???  0x00000034 0 + 52
 1 CoreFoundation 0x3537a226 - [NSObject performSelector: withObject:] + 38
 2 Foundation 0x32ce2752 __NSThreadPerformPerform + 346
 3 CoreFoundation 0x353efafe __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 10
 4 CoreFoundation 0x353ef2ca __CFRunLoopDoSources0 + 210
 5 CoreFoundation 0x353ee070 __CFRunLoopRun + 648
 6 CoreFoundation 0x353714d8 CFRunLoopRunSpecific + 296
 7 CoreFoundation 0x353713a0 CFRunLoopRunInMode + 100
 8 WebCore 0x324c912a _ZL12RunWebThreadPv + 398
 9 libsystem_c.dylib 0x35ba1c18 _pthread_start + 316
 10 libsystem_c.dylib 0x35ba1ad4 thread_start + 4

Veo que tienes iOs 5.0. ¿Los files que está cargando documentos de Office (docx, xls)?

Si es así, entonces su caso es el mismo que el mío. Este problema se reproduce solo en sistemas con 5.0 (iPad y iPad 2 aquí) y sucede cuando intenta detener el object UIWebView antes de que termine de cargar el file. Ya sea llamando a stopLoading o loadRequest

Esto no sucede con los files txt.

Y si lo hace, se origina en WebThread partir de la línea:

 #1 0x34912158 in -[QuickLookHandleAsDelegate connection:didReceiveData:lengthReceived:] () 

y saltando a algunos pointers random como:

 #0 0x00000010 in 0x00000010 () 

Compruebe que su delegado de UIWebViewDelegate sigue siendo válido (es decir, no publicado) si su UIWebView está en segundo plano. Este problema puede deberse a que la vista web intenta llamar a su delegado con

 - (void)webViewDidFinishLoad:(UIWebView *)webView; 

en el background después de que se haya completado la carga.

Para ampliar la respuesta de @ K1w1Geek, el problema puede ser que el usuario cierra la vista web justo antes de intentar enviar una callback de delegado y se cuelga porque no existe. Esto no necesariamente tiene que estar relacionado con la carga de un tipo de documento en particular porque estoy experimentando este locking simplemente navegando en un website de Salesforce.

Entonces, si tiene un button de cierre, intente detener la carga y configure el delegado a cero antes del cierre:

 - (IBAction)btnCloseWebviewTap:(id)sender{ [_webView stopLoading]; _webView.delegate = nil; [self dismissViewControllerAnimated:YES completion:nil]; }