Ios WebCore中的EXC_错误访问(SIGSEGV)::UserGestureIndicator::ProcessingUserSture

Ios WebCore中的EXC_错误访问(SIGSEGV)::UserGestureIndicator::ProcessingUserSture,ios,html,websocket,web-worker,segmentation-fault,Ios,Html,Websocket,Web Worker,Segmentation Fault,我有一个使用UIWebView和HTML5 WebSocket构建的iOS应用程序。该应用程序似乎经历了随机崩溃。它发生在用户与应用程序交互时,以及在用户与应用程序之间未发生交互的寿命测试期间 所有崩溃日志都具有以下内容: Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS at 0x00000000 线程日志包含: Thread XX name: WebCore: Worker

我有一个使用UIWebView和HTML5 WebSocket构建的iOS应用程序。该应用程序似乎经历了随机崩溃。它发生在用户与应用程序交互时,以及在用户与应用程序之间未发生交互的寿命测试期间

所有崩溃日志都具有以下内容:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000000
线程日志包含:

Thread XX name:  WebCore: Worker
Thread XX Crashed:
0   WebCore                         0x36c8c7a0 WebCore::UserGestureIndicator::processingUserGesture() + 20
1   WebCore                         0x36d7070a WebCore::DOMTimer::DOMTimer(WebCore::ScriptExecutionContext*, WTF::PassOwnPtr<WebCore::ScheduledAction>, int, bool) + 74
2   WebCore                         0x36d70616 WebCore::DOMTimer::install(WebCore::ScriptExecutionContext*, WTF::PassOwnPtr<WebCore::ScheduledAction>, int, bool) + 46
3   WebCore                         0x3753ae7e WebCore::WorkerContext::setTimeout(WTF::PassOwnPtr<WebCore::ScheduledAction>, int) + 30
4   WebCore                         0x3731ac02 WebCore::JSWorkerContext::setTimeout(JSC::ExecState*) + 194
5   WebCore                         0x37318ff6 WebCore::jsWorkerContextPrototypeFunctionSetTimeout(JSC::ExecState*) + 110
6   JavaScriptCore                  0x2fa9a1d8 llint_native_call_trampoline + 62
7   JavaScriptCore                  0x2faa355a JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 66
8   WebCore                         0x36db0b16 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) + 558
9   WebCore                         0x36d6ebba WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow>&) + 482
10  WebCore                         0x36c6da2a WebCore::EventTarget::fireEventListeners(WebCore::Event*) + 174
11  WebCore                         0x36e28824 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>) + 60
12  WebCore                         0x3753e596 WebCore::MessageWorkerContextTask::performTask(WebCore::ScriptExecutionContext*) + 222
13  WebCore                         0x3753ec6e WebCore::WorkerRunLoop::runInMode(WebCore::WorkerContext*, WebCore::ModePredicate const&, WebCore::WorkerRunLoop::WaitMode) + 158
14  WebCore                         0x3753eb94 WebCore::WorkerRunLoop::run(WebCore::WorkerContext*) + 60
15  WebCore                         0x37540d64 WebCore::WorkerThread::workerThread() + 432
16  JavaScriptCore                  0x2fa4ba68 WTF::wtfThreadEntryPoint(void*) + 12
17  libsystem_pthread.dylib         0x397b6c5a _pthread_body + 138
18  libsystem_pthread.dylib         0x397b6bca _pthread_start + 98
19  libsystem_pthread.dylib         0x397b4ccc thread_start + 4
线程XX名称:WebCore:Worker
线程XX崩溃:
0 WebCore 0x36c8c7a0 WebCore::UserGestureIndicator::ProcessingUserSergeSture()+20
1个WebCore 0x36d7070a WebCore::DOMTimer::DOMTimer(WebCore::ScriptExecutionContext*,WTF::PassOwnPtr,int,bool)+74
2个WebCore 0x36d70616 WebCore::DOMTimer::install(WebCore::ScriptExecutionContext*,WTF::PassOwnPtr,int,bool)+46
3 WebCore 0x3753ae7e WebCore::WorkerContext::setTimeout(WTF::PassOwnPtr,int)+30
4 WebCore 0x3731ac02 WebCore::JSWorkerContext::setTimeout(JSC::ExecState*)+194
5 WebCore 0x37318ff6 WebCore::jsWorkerContextPrototypeFunctionSetTimeout(JSC::ExecState*)+110
6 JavaScriptCore 0x2fa9a1d8 llint_native_call_trampoline+62
7 JavaScriptCore 0x2faa355a JSC::call(JSC::ExecState*,JSC::JSValue,JSC::CallType,JSC::CallData常量&,JSC::JSValue,JSC::ArgList常量&)+66
8 WebCore 0x36db0b16 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*,WebCore::Event*)+558
9 WebCore 0x36d6ebba WebCore::EventTarget::fireEventListeners(WebCore::Event*,WebCore::EventTargetData*,WTF::Vector&)+482
10 WebCore 0x36c6da2a WebCore::EventTarget::fireEventListeners(WebCore::Event*)+174
11 WebCore 0x36e28824 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr)+60
12 WebCore 0x3753e596 WebCore::MessageWorkerContextTask::performTask(WebCore::ScriptExecutionContext*)+222
13 WebCore 0x3753ec6e WebCore::WorkerUnloop::runInMode(WebCore::WorkerContext*,WebCore::ModePredicate const&,WebCore::WorkerUnloop::WaitMode)+158
14 WebCore 0x3753eb94 WebCore::WorkerUnloop::run(WebCore::WorkerContext*)+60
15 WebCore 0x37540d64 WebCore::WorkerThread::WorkerThread()+432
16 JavaScriptCore 0x2fa4ba68 WTF::wtfThreadEntryPoint(void*)+12
17 libsystem_pthread.dylib 0x397b6c5a_pthread_body+138
18 libsystem_pthread.dylib 0x397b6bca_pthread_start+98
19 libsystem_pthread.dylib 0x397b4ccc thread_start+4
我设法在抛出时捕捉到了异常,从我可以看出它看起来是一个框架bug。见附件截图

我读到的大部分内容似乎都表明web视图在委托触发之前被解除分配,但在我的代码中没有任何地方我可以解除分配

有没有人遇到过这样或类似的情况?非常感谢您的帮助

更新


在联系开发者支持后,我向苹果提交了一份bug报告。他们的工程师确认这是一个bug。

在我的例子中,我也有类似的问题

正如许多人所说的,这可能是由于WebView在释放WebView时调用了WebView委托方法造成的

为了修复此问题,我们需要将委托设置为nil,并在指定的方法上停止webview请求

您必须添加以下代码行

-(void)viewDidUnload{
    [super viewDidUnload];

    webViewRef.delegate = nil;
    [webViewRef stopLoading];

}

-(void)backBtnClicked{

    webViewRef.delegate = nil;
    [webViewRef stopLoading];

}

希望这对您有所帮助。

如果在您的研究和其他人的帮助下,您无法解决此问题,我建议您向Apple提交一份bug报告,网址为@SlyRaskal:Agreed。如果这篇文章没有任何结果,我会这么做的!我遇到了一个类似的问题,WebCore工作线程出现了一个异常。你试过运行僵尸探查器来检查是否/在哪里访问了无效对象吗?@user2085001:我试过运行僵尸和仪器泄漏。两人都没有表现出任何异常。谢谢你的建议。如果苹果方面在bug跟踪方面有任何进展(我不希望在几个月内有任何进展),请更新这个话题,并给出关于这个问题的答案。同样,这个问题可能是封闭的,因为无法解决,但最好保持开放,因为有些人可能有类似的问题,所以不会问同样的问题。