我在一些屏幕中使用UIWebViews,因为我需要一个完美的超文本标记语言文本解析。
根据崩溃报告,在这些屏幕上发生了大量的崩溃,称为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>发布于 2016-05-10 03:08:39
我不知道您是如何创建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
}发布于 2017-07-31 16:49:50
你在用Safari调试你的web视图吗?如果是,在您退出Safari之后,崩溃应该会消失。
我在使用WKWebView时遇到了类似的崩溃,我确信3天前同样的代码还能正常工作。hlung的评论救了我,你可以在HERE找到它。
以下是我的案例中的一段崩溃日志,供您参考。
异常类型: EXC_BAD_ACCESS (SIGSEGV)异常子类型: KERN_INVALID_ADDRESS at 0x00000000dbbdfb10由线程:0触发过滤系统日志:无发现线程0崩溃:0 JavaScriptCore 0x225d74c6 WTF::HashSet,WTF::HashTraits >::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(布尔)+ 239 6 JavaScriptCore 0x2248d261 -JSContext dealloc + 125 7 libobjc.A.dylib 0x1dac5195 objc_object::sidetable_release(布尔)+ 239 8 JavaScriptCore 0x226470af 125void*) + 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 GraphicsServices0x1ff00bfd GSEventRunModal + 157 16 UIKit 0x2390e82f -UIApplication _run + 575 17 UIKit 0x23908f61 UIApplicationMain + 151 18 MyApp 0x00488b29 0x2c000 + 4573993 19 libdyld.dylib 0x1df1e50b start + 3
发布于 2018-07-23 00:49:41
WebKit是Web视图背后的引擎,当它发现内存问题时,可能会引发崩溃。正如您所发现的,它们由特殊的十六进制单词0x00000000bbadbeef标识。
你正在访问的网页看起来微不足道,所以你遇到问题是一个惊喜。我建议您遵循https://webkit.org/debugging-webkit/#ios-simulator中描述的WebKit调试工具
请使用本文所揭示的任何日志或见解来更新您的问题。
https://stackoverflow.com/questions/35128579
复制相似问题