gpt4 book ai didi

iOS UIWebView 在 WebCore::FrameTree::top 上随机崩溃

转载 作者:可可西里 更新时间:2023-11-01 03:58:46 27 4
gpt4 key购买 nike

我有一个 iOS 应用程序似乎在具有 UIWebView 的屏幕上随机崩溃。看起来崩溃主要发生在 iPhone 5C 设备上(74% 的时间),100% 的时间发生在 iOS 10.X 上。

异常信息是:

EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000028

从那个低内存地址来看,它让我觉得有些东西是nil

这是回溯(这不是主线程):

0    WebCore                                       WebCore::FrameTree::top() + 0
1 WebCore WebCore::ContentSecurityPolicy::allowFrameAncestors() + 33
2 WebCore WebCore::DocumentLoader::responseReceived() + 413
3 WebCore WebCore::DocumentLoader::handleSubstituteDataLoadNow() + 203
4 WebCore WebCore::ThreadTimers::sharedTimerFiredInternal() + 149
5 WebCore WebCore::timerFired() + 23
6 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 15
7 CoreFoundation __CFRunLoopDoTimer + 833
8 CoreFoundation __CFRunLoopDoTimers + 189
9 CoreFoundation __CFRunLoopRun + 781
10 CoreFoundation CFRunLoopRunSpecific + 471
11 CoreFoundation CFRunLoopRunInMode + 105
12 WebCore RunWebThread() + 427
13 libsystem_pthread.dylib _pthread_body + 217
14 libsystem_pthread.dylib _pthread_start + 235

我无法自己重现此崩溃。

由于 WebKit 是开源的,我找到了它崩溃的代码:WebCore::FrameTree::top .通过查看该代码,我猜测 m_thisFrame->tree()NULL,但我不确定如何解释它。我不确定在那种情况下到底什么是“框架”和“树”。

从回溯来看,似乎有一些计时器正在被触发,可能是在 View Controller 或 Web View 已经被释放之后?该计时器是由于 JavaScript setTimeout 调用引起的吗?

我还注意到每次发生这种崩溃时,我都会接到一个电话 [UIWebViewDelegate webView:didFailLoadWithError:]就在崩溃之前。该委托(delegate)方法中返回的最常见错误是:

  • 帧加载中断
  • 过多的 HTTP 重定向
  • 请求超时

但我没有适当的分析来将错误消息与崩溃联系起来,所以我不确定哪个(如果有的话)可以解释它。当该委托(delegate)方法触发时,我会在模式中向用户显示一条错误消息。这可能与坠机有关吗?我尝试重现“Frame load interrupted”和“too many HTTP redirects”错误,但都没有导致我在模拟器中崩溃。

我已经遵循了 this answer 中的建议(大部分)并在 viewWillDisappear 中调用 [webview stopLoading] 我在 dealloc 中调用 self.webView.delegate = nil > 包含 View Controller ,但它没有帮助。

最佳答案

这并不是真正的答案,但这次崩溃似乎与启用内容过滤(父控件)的时间有关。如果您将您的应用程序在 UIWebView 中加载的任何域添加到 iOS 父控件阻止列表,您应该会在应用程序日志中看到此错误(来自 WebKit 的 WebFilter 内部)。它似乎以某种方式使 UIWebView 无效,因此当您再次与它交互时,它会使您的整个应用程序崩溃。您可以通过切换到 WKWebView 来避免崩溃。

WF: WebFilterEvaluator:addData: https://some-blocked-url.com 被限制:列入黑名单

关于iOS UIWebView 在 WebCore::FrameTree::top 上随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44057041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com