macOS应用程序在M1上的WKWebView()上崩溃,出现EXC_BREAKPOINT错误

3

我们的应用程序在Intel机器上调试时可以正常工作,但在搭载M1芯片的MacBook Pro上运行时会崩溃。

我们尝试初始化WKWebView时应用程序崩溃

enter image description here

setUpWebViewUI在主线程上使用DispatchQueue.main.async调用

我们尝试了什么

  • 我们尝试了所有常见的解决方案(清理、派生数据、罗塞塔等)。
  • 一些开发人员建议更改模式设置,但对我们也没有用。
  • 我们尝试了其他WKWebView的初始化方法,但结果仍然导致崩溃。

有效解决方案

我们发现一件事情,如果Xcode没有连接,则应用程序可以正常工作。如果我们使用Product文件夹中的.app文件运行应用程序,则可以正常工作,不会崩溃。

版本详细信息:

macOS版本:11.6.4。
Xcode版本:13.2.1

调用栈

#0  0x00000001972bbf50 in void JSC::LinkBuffer::copyCompactAndLinkCode<unsigned int>(JSC::MacroAssembler&, JSC::JITCompilationEffort) ()
#1  0x00000001972bb35c in JSC::LinkBuffer::linkCode(JSC::MacroAssembler&, JSC::JITCompilationEffort) ()
#2  0x0000000197908104 in JSC::LLInt::createJSGateThunk(void*, WTF::PtrTag, char const*) ()
#3  0x0000000196edec44 in JSC::LLInt::initialize() ()
#4  0x0000000197a9410c in void std::__1::__call_once_proxy<std::__1::tuple<JSC::initialize()::$_0&&> >(void*) ()
#5  0x000000018195d2b0 in std::__1::__call_once(unsigned long volatile&, void*, void (*)(void*)) ()
#6  0x0000000197a90ac8 in JSC::initialize() ()
#7  0x000000019ca24fc0 in WebKit::runInitializationCode(void*) ()
#8  0x000000018195d2b0 in std::__1::__call_once(unsigned long volatile&, void*, void (*)(void*)) ()
#9  0x000000019c80cafc in WebKit::InitializeWebKit2() ()
#10 0x000000019caeba84 in -[WKWebViewConfiguration init] ()
#11 0x000000019cae12b0 in -[WKWebView initWithFrame:] ()
#12 0x0000000104263428 in @nonobjc WKWebView.init() ()
#13 0x0000000104262350 in WKWebView.__allocating_init() ()
#14 0x000000010440c20c in AccountDetailViewController.setUpWebViewUI() at 

1
似乎你并不孤单,也不是你的错:https://dev59.com/wL7pa4cB1Zd3GeqP04pF - lazarevzubov
@lazarevzubov 是的,我们的问题很相似(或者可能是一样的),我已经尝试了所有给出的答案,但都没有起作用。对于他们来说,在最新的iOS上运行良好。我们还没有在最新的macOS上尝试过。 - CRDave
有人成功解决了这个bug吗?对我来说,使用XCode 14.3.1和13.4.1版本,问题仍然存在。 - Jim75
2个回答

0

仍然存在同样的问题, MacOS 13 和 XCode 14.1。

只需在 IB 中将 WKWebKit 的实例附加到 NSWindow 中,就会在窗口控制器加载时立即导致应用程序崩溃。


0

我有同样的问题。唯一适用于我的解决方法是在 Rosetta 下运行 Xcode(在 /Applications 中打开 Xcode 设置并勾选 Rosetta 复选框),然后在目标 我的 Mac (Rosetta) 上构建和运行应用程序。

这样,所有的代码将编译为 x86_64,这个架构不会有 WKWebView 的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接