【问题标题】:Weird iOS UIWebView Crash called WTF Crash奇怪的 iOS UIWebView Crash 称为 WTF Crash
【发布时间】:2016-02-01 10:48:08
【问题描述】:

我在某些屏幕中使用 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 Crash 有什么建议吗?

编辑:这是 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>

【问题讨论】:

  • WTF 崩溃! . . ....
  • 相关Question
  • 你指的“htmlString”是什么?
  • 检查是否在您创建 webView 的任何时间点调用了 didReceiveMemoryWarning。
  • @Vizllx 在问题末尾添加了 htmlString 描述。还检查了内存警告。没有调用 didReceiveMemoryWarning

标签: ios uiwebview crash


【解决方案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
}

【讨论】:

  • 你确定吗?
  • @Jitendra 我确信这解决了我的 WTFCrash 问题,不确定 OP
  • 我的 WebView 创建逻辑只在主线程上,我仍然面临这个问题。
【解决方案2】:

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

我在使用 WKWebView 时遇到了类似的崩溃,我确信相同的代码在 3 天前可以正常运行。 hlung的cmets救了我,你可以找到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

【讨论】:

    【解决方案3】:

    Web 视图背后的引擎 WebKit 在发现内存问题时会引发崩溃。 如您所见,它们由特殊的十六进制字 0x00000000bbadbeef 标识。

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

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

    【讨论】:

      【解决方案4】:

      这是一个 Google Ads 问题,已在 10 月 17 日的 7.35.0 版和更新版本中确定。

      您应该能够解决更新 pod 的问题。

      来自 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

      【讨论】:

        猜你喜欢
        • 2013-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-04
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        相关资源
        最近更新 更多