WebCore :: UserGestureIndicator :: processingUserGesture中的EXC_BAD_ACCESS(SIGSEGV)

我有一个使用UIWebView和HTML5 websockets构build的iOS应用程序。 该应用程序看似随机崩溃。 它发生在一个用户正在与它进行交互,并在用户和应用程序之间没有交互发生的长寿testing。

崩溃日志都有以下内容:

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 

我设法赶上抛出exception,从我可以告诉它看起来是一个框架错误。 看附件截图。

在这里输入图像说明

我读过的大部分内容似乎都表明,在委托开始之前,web视图正在被处理,但是我的代码中没有任何地方可以解散!

有没有人遇到这个或类似的情况? 任何帮助深表感谢!

UPDATE

联系开发人员支持后,我已经向Apple提交了一个错误报告。 他们的工程师确认这是一个错误。

在我的案例中,我有类似的问题。

WebView崩溃

正如很多人所说,这可能是由于WebView的委托方法调用,而webview被释放。

为了解决,我们需要将委托设置为零,并停止指定方法的webview请求

你必须添加下面的代码行

 -(void)viewDidUnload{ [super viewDidUnload]; webViewRef.delegate = nil; [webViewRef stopLoading]; } -(void)backBtnClicked{ webViewRef.delegate = nil; [webViewRef stopLoading]; } 

希望它可以帮助你。