奇怪的iOS UIWebView Crash称为WTF Crash

时间:2016-02-01 10:48:08

标签: ios uiwebview crash

我在某些屏幕中使用UIWebViews,因为我需要一个完美的Html文本解析。

根据崩溃报告,在这些屏幕上发生了大量的崩溃,称为WTF崩溃。这是一次崩溃的痕迹

Crashed: WebThread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x00000000bbadbeef

Thread : Crashed: WebThread
0  JavaScriptCore                 0x184fd2710 WTFCrash + 72
1  JavaScriptCore                 0x184fd2708 WTFCrash + 64
2  WebCore                        0x1852b7d78 <redacted> + 362
3  WebCore                        0x1852b7bec <redacted> + 44
4  CoreFoundation                 0x1817d8588 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
5  CoreFoundation                 0x1817d632c __CFRunLoopDoObservers + 372
6  CoreFoundation                 0x1817d6674 __CFRunLoopRun + 696
7  CoreFoundation                 0x181705680 CFRunLoopRunSpecific + 384
8  WebCore                        0x1852b5998 <redacted> + 456
9  libsystem_pthread.dylib        0x18148bb28 <redacted> + 156
10 libsystem_pthread.dylib        0x18148ba8c _pthread_start + 154
11 libsystem_pthread.dylib        0x181489028 thread_start + 4

此次崩溃时没有操作系统版本或设备关系。

我也不喜欢使用UIWebView。它像其他所有组件一样被添加到nib中,在实现文件中我使用它像下面的

self.webView.scrollView.scrollEnabled = NO;
self.webView.scrollView.bounces = NO;
self.webView.opaque = NO;
self.webView.backgroundColor = [UIColor clearColor];
self.webView.delegate = self;
[self.webView loadHTMLString:htmlString baseURL:nil];

有关如何解决WTF崩溃的任何建议?

编辑:这是htmlString的样子

Printing description of htmlString:
<html><body style="font-family:HelveticaNeue; font-size:10; background-color:#E5E4E4; text-align:left; color:#696969 ">test string</body></html>

4 个答案:

答案 0 :(得分:1)

我不知道您是如何创建UIWebView的。但是我遇到了与WTFCrash类似的问题,我能够通过确保在主线程上创建UIWebView来解决它:

- (void)createWebView{
    if (![NSThread isMainThread]) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [self createWebView];
        });
        return;
    }
    self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
    //Rest of my code
}

答案 1 :(得分:1)

您是否正在使用Safari调试Web视图?如果是,退出Safari后崩溃应该消失。

我遇到了与WKWebView类似的崩溃,我确信3天前相同的代码工作愉快。 hlung的评论救了我,你可以找到HERE

供您参考,以下是我案例中的崩溃日志。

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000000dbbdfb10
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 Crashed:
0   JavaScriptCore                  0x225d74c6 WTF::HashSet<JSC::MarkedArgumentBuffer*, WTF::PtrHash<JSC::MarkedArgumentBuffer*>, WTF::HashTraits<JSC::MarkedArgumentBuffer*> >::remove(JSC::MarkedArgumentBuffer* const&) + 54
1   JavaScriptCore                  0x22620b41 JSC::VM::~VM() + 211
2   JavaScriptCore                  0x22197e57 JSC::JSLockHolder::~JSLockHolder() + 73
3   JavaScriptCore                  0x2248defd JSContextGroupRelease + 61
4   JavaScriptCore                  0x2250e37d -[JSVirtualMachine dealloc] + 27
5   libobjc.A.dylib                 0x1dac5195 objc_object::sidetable_release(bool) + 239
6   JavaScriptCore                  0x2248d261 -[JSContext dealloc] + 125
7   libobjc.A.dylib                 0x1dac5195 objc_object::sidetable_release(bool) + 239
8   JavaScriptCore                  0x226470af WTF::RunLoop::TimerBase::timerFired(__CFRunLoopTimer*, void*) + 25
9   CoreFoundation                  0x1e807357 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 15
10  CoreFoundation                  0x1e807029 __CFRunLoopDoTimer + 897
11  CoreFoundation                  0x1e8069e1 __CFRunLoopDoTimers + 221
12  CoreFoundation                  0x1e804cc5 __CFRunLoopRun + 1365
13  CoreFoundation                  0x1e754073 CFRunLoopRunSpecific + 487
14  CoreFoundation                  0x1e753e81 CFRunLoopRunInMode + 105
15  GraphicsServices                0x1ff00bfd GSEventRunModal + 157
16  UIKit                           0x2390e82f -[UIApplication _run] + 575
17  UIKit                           0x23908f61 UIApplicationMain + 151
18  MyApp                           0x00488b29 0x2c000 + 4573993
19  libdyld.dylib                   0x1df1e50b start + 3

答案 2 :(得分:0)

WebKit,Web Views的引擎,在看到内存问题时可能会导致崩溃。 如您所见,它们由特殊的十六进制单词0x00000000bbadbeef标识。

您正在访问的网页似乎微不足道,因此您遇到问题令人惊讶。我建议您使用WebKit调试工具,如以下所述: https://webkit.org/debugging-webkit/#ios-simulator

请使用显示的任何日志或见解更新您的问题。

答案 3 :(得分:0)

这是一个Google Ads问题,已经确定已在10月17日的7.35.0版本和更高版本中得到解决。

您应该能够解决更新您的广告连播的问题。

通过 Google移动广告SDK开发团队邮件:

  

“该问题已由团队修复,应在即将发布的SDK版本(发布说明)中发布。” (8月20日)

     

“问题已解决且已经生效。” (10月17日)

来源: https://groups.google.com/d/msg/google-admob-ads-sdk/XL35wo6mQts/R2LlGZDxBwAJ

发行说明: https://developers.google.com/admob/ios/rel-notes