Сбой iOS UIWebView в "WebThread" - PullRequest
       10

Сбой iOS UIWebView в "WebThread"

8 голосов
/ 12 ноября 2011

Кто-нибудь может мне помочь с этим сбоем? Это происходит периодически при переключении между некоторыми экземплярами UIWebView во время загрузки.

Авария часто немного отличается, но это всегда крах "WebThread" с похожей трассировкой стека.

Вот соответствующие части двух сбоев:

Date/Time:       2011-11-08 14:29:01.165 -0500
OS Version:      iPhone OS 5.0 (9A334)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000006
Crashed Thread:  4

Thread 4 name:  WebThread
Thread 4 Crashed:
0   ???                             0x00000006 0 + 6
1   WebCore                         0x32a36154 -[QuickLookHandleAsDelegate connection: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
Date/Time:       2011-11-08 15:09:01.410 -0500
OS Version:      iPhone OS 5.0 (9A334)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000034
Crashed Thread:  4

Thread 4 name:  WebThread
Thread 4 Crashed:
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

Ответы [ 3 ]

7 голосов
/ 30 ноября 2011

Я вижу, что у вас iOs 5.0. Файлы, которые вы загружаете в документы Office (docx, xls)?

Если так, то ваш случай такой же, как у меня. Эта проблема воспроизводится только в системах с 5.0 (iPad и iPad 2 здесь) и возникает при попытке остановить объект UIWebView до завершения загрузки файла. Будь то по телефону stopLoading или loadRequest

Этого не происходит с текстовыми файлами.

И если это так, он начинается с WebThread, начиная со строки:

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

и переход к некоторым случайным указателям, таким как:

#0  0x00000010 in 0x00000010 ()
3 голосов
/ 18 августа 2015

Чтобы расширить ответ @ K1w1Geek, проблема может заключаться в том, что пользователь закрывает веб-представление непосредственно перед попыткой отправить обратный вызов делегата, и происходит сбой, поскольку он не существует. Это не обязательно должно быть связано с загрузкой определенного типа документа, потому что я испытываю этот сбой, просто переходя на веб-сайт Salesforce.

Так что, если у вас есть кнопка закрытия, попробуйте остановить загрузку и установить делегат на ноль перед закрытием:

- (IBAction)btnCloseWebviewTap:(id)sender{
    [_webView stopLoading];
    _webView.delegate = nil;
    [self dismissViewControllerAnimated:YES completion:nil];
}
2 голосов
/ 13 ноября 2011

Убедитесь, что ваш делегат UIWebViewDelegate все еще действителен (т.е. не освобожден), если ваш UIWebView находится в фоновом режиме.Эта проблема может быть вызвана тем, что веб-просмотр пытается вызвать вашего делегата с

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

в фоновом режиме после завершения загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...