在 M1 上使用 EXC_BREAKPOINT 的 WKWebView() 上的 macOS 应用程序崩溃
macOS app crash on WKWebView() with EXC_BREAKPOINT on M1
我们的应用程序在 Intel 机器上调试时可以正常运行,但是当我们 运行 在带有 M1 的 MacBook Pro 上时它会崩溃。
当我们尝试初始化时应用程序崩溃 WKWebView
setUpWebViewUI
在主线程上使用 DispatchQueue.main.async
调用
我们尝试了什么
- 我们已经尝试了所有常见的解决方案(干净的派生数据、Rosetta、
等..).
- 一些开发人员建议更改架构设置,但是
也不适合我们。
- 我们尝试了其他初始化方法
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
我也遇到了同样的问题。唯一对我有用的解决方法是在 Rosetta 下 运行 XCode(在 /Applications 打开设置 XCode 并设置 Rosetta 复选框),然后在目标上构建和 运行 应用程序My mac (Rosetta)
在这种情况下,所有代码都将为 x86_64 编译,而 WKWebView
没有问题。
我们的应用程序在 Intel 机器上调试时可以正常运行,但是当我们 运行 在带有 M1 的 MacBook Pro 上时它会崩溃。
当我们尝试初始化时应用程序崩溃 WKWebView
setUpWebViewUI
在主线程上使用 DispatchQueue.main.async
我们尝试了什么
- 我们已经尝试了所有常见的解决方案(干净的派生数据、Rosetta、 等..).
- 一些开发人员建议更改架构设置,但是 也不适合我们。
- 我们尝试了其他初始化方法
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
我也遇到了同样的问题。唯一对我有用的解决方法是在 Rosetta 下 运行 XCode(在 /Applications 打开设置 XCode 并设置 Rosetta 复选框),然后在目标上构建和 运行 应用程序My mac (Rosetta)
在这种情况下,所有代码都将为 x86_64 编译,而 WKWebView
没有问题。