在 M1 上使用 EXC_BREAKPOINT 的 WKWebView() 上的 macOS 应用程序崩溃

macOS app crash on WKWebView() with EXC_BREAKPOINT on M1

我们的应用程序在 Intel 机器上调试时可以正常运行,但是当我们 运行 在带有 M1 的 MacBook Pro 上时它会崩溃。

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

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

调用

我们尝试了什么

什么有效

我们发现的一件事是,如果未附加 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 

我也遇到了同样的问题。唯一对我有用的解决方法是在 Rosetta 下 运行 XCode(在 /Applications 打开设置 XCode 并设置 Rosetta 复选框),然后在目标上构建和 运行 应用程序My mac (Rosetta)

在这种情况下,所有代码都将为 x86_64 编译,而 WKWebView 没有问题。