我在某些屏幕中使用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>
答案 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