我正在使用WKWebView构建Mac应用。使用webview.evaluateJavaScript
Swift辅助函数和webkit.messageHandlers[funName].postMessage
JavaScript端函数,JavaScript和Swift代码之间存在很多共同点。
在某些时候,经过几个小时的使用后,应用程序崩溃了以下堆栈跟踪:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.JavaScriptCore 0x00007fff926d95fe WTFCrash + 62
1 com.apple.JavaScriptCore 0x00007fff9250dff6 JSC::MachineThreads::makeUsableFromMultipleThreads() + 38
2 com.apple.JavaScriptCore 0x00007fff9250e079 JSGlobalContextCreateInGroup + 89
3 com.apple.JavaScriptCore 0x00007fff928906ba -[JSContext initWithVirtualMachine:] + 122
4 com.apple.WebKit 0x00007fff8d62699f ScriptMessageHandlerDelegate::didPostMessage(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, WebCore::SerializedScriptValue&) + 135
5 com.apple.WebKit 0x00007fff8d6838d3 WebKit::WebUserContentControllerProxy::didPostMessage(IPC::Connection*, unsigned long long, unsigned long long, unsigned long long, IPC::DataReference const&) + 217
6 com.apple.WebKit 0x00007fff8d60e514 void IPC::handleMessage<Messages::WebUserContentControllerProxy::DidPostMessage, WebKit::WebUserContentControllerProxy, void ( WebKit::WebUserContentControllerProxy::*)(IPC::Connection*, unsigned long long, unsigned long long, unsigned long long, IPC::DataReference const&)>(IPC::Connection*, IPC::MessageDecoder&, WebKit::WebUserContentControllerProxy*, void (WebKit::WebUserContentControllerProxy::*)(IPC::Connection*, unsigned long long, unsigned long long, unsigned long long, IPC::DataReference const&)) + 134
7 com.apple.WebKit 0x00007fff8d58f2d2 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection*, IPC::MessageDecoder&) + 120
8 com.apple.WebKit 0x00007fff8d6995d8 WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) + 24
9 com.apple.WebKit 0x00007fff8d542ee0 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::MessageDecoder, std::__1::default_delete<IPC::MessageDecoder> >) + 94
我无法在互联网上找到有关WTFCrash错误的任何内容。有没有人遇到过同样的问题?
所有回调都在主线程中使用dispatch_async(dispatch_get_main_queue(), {...})
块执行。
感谢您的帮助!