CoreAnalytics::Client / FrameworkConfiguration::init 内神秘崩溃

2023-12-29

我遇到了奇怪的崩溃,事实证明很难调试。我可以在启动应用程序后立即随意触发它,只需按下并释放 Command 键几次即可;不需要与我的应用程序进行其他交互。不用说,当命令键更改状态时,我的应用程序不会执行任何操作。实际上,其他按键也会引发崩溃,包括字母键; Command 没有什么特别之处,只是它似乎不太可能有其他副作用。

崩溃始终发生在后台线程中,始终具有相同的回溯,但不包含我的任何代码:

#0  0x00007fff603da3ec in __cxa_throw ()
#1  0x00007fff42e90492 in nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer>::parser::unexpect(nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer>::lexer::token_type) const ()
#2  0x00007fff42e8ccad in nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer>::parser::parse_internal(bool) ()
#3  0x00007fff42e8fe63 in nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer>::parser::parse() ()
#4  0x00007fff42e8fcd4 in nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer> nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer>::parse<char const*, 0>(char const*, char const*, std::__1::function<bool (int, nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer>::parse_event_t, nlohmann::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long long, unsigned long long, double, std::__1::allocator, nlohmann::adl_serializer>&)>) ()
#5  0x00007fff42e826be in FrameworkConfiguration::init() ()
#6  0x00007fff42e82478 in FrameworkConfiguration::create(applesauce::xpc::object) ()
#7  0x00007fff42e82100 in CoreAnalytics::Client::handleConfigurationChange_sync(applesauce::xpc::dict const&) ()
#8  0x00007fff42e81f52 in CoreAnalytics::Client::handleServerMessage_sync(applesauce::xpc::dict) ()
#9  0x00007fff42e94039 in ___ZZN13CoreAnalytics6Client4initEvENK3$_1clEv_block_invoke ()
#10 0x00007fff634b8a54 in _xpc_connection_call_event_handler ()
#11 0x00007fff634b795c in _xpc_connection_mach_event ()
#12 0x000000010040482f in _dispatch_client_callout4 ()
#13 0x0000000100421b3a in _dispatch_mach_msg_invoke ()
#14 0x000000010040bb40 in _dispatch_lane_serial_drain ()
#15 0x0000000100422eda in _dispatch_mach_invoke ()
#16 0x000000010040bb40 in _dispatch_lane_serial_drain ()
#17 0x000000010040cae8 in _dispatch_lane_invoke ()
#18 0x0000000100419f2e in _dispatch_workloop_worker_thread ()
#19 0x000000010049002c in _pthread_wqthread ()
#20 0x000000010048f157 in start_wqthread ()

nlohmann:: stuff 是一个我认识的 JSON 库,因为我在其他项目中使用过它,但我在这个项目中没有使用它。根据 Google 的说法,FrameworkConfiguration:: 和 CoreAnalytics:: 与我无法直接控制的内部 Apple 分析收集相关。我已在这台计算机的“系统偏好设置”的“安全和隐私”面板中关闭了所有分析,然后重新启动了计算机;该错误仍然是 100% 可重现的。

发生这种情况时,应用程序中的主线程不执行任何操作;通常它位于 mach_msg_trap() 中。主线程上的回溯也没有我的代码,并且是空闲的 CFRunLoop 的典型 macOS 回溯。

我尝试过打开 Xcode 提供的各种调试功能 - 地址清理程序、未定义行为清理程序、malloc 涂鸦/保护边缘/保护 malloc/僵尸对象/malloc 堆栈。这些都不会产生与问题相关的任何输出。 (即,除了 malloc 内容的初始输出表明它已启用之外,没有任何输出,等等等等。)

我使用的是 Catalina 10.15.3,Xcode 11.3.1。我的下一步将是升级这两个;我忘记了我已经过时了,但只是稍微过时了,所以如果这有什么不同的话,那将是令人惊讶的。

显然,当我按下按键时,我系统上的其他应用程序不会崩溃,所以我的应用程序一定正在执行某些操作来触发此问题,但我无法想象是什么,而且我不知道如何调试此问题。我想如果升级没有帮助,我将复制我的项目并开始删除大块代码,直到错误不再重现,并尝试缩小应用程序的负责部分。不过,我想我应该先检查一下这里是否有人看到过这个。谢谢。


添加:我刚刚更新到 macOS 10.15.4 和 Xcode 11.4.1。这次崩溃没有任何变化。是时候开始雕刻了。如果我找出原因,我会在这里发布,以便其他人看看他们是否遇到了这个问题。


嗯,有点不太令人满意的答案是,它似乎是某种损坏的 Xcode 项目文件的结果。我从 11.4.1 中创建的一个新的 Cocoa 应用程序项目开始,并一一添加源文件和资源,边测试边进行。我最终重新创建了完整的项目,并且错误不再存在。旧的 Xcode 项目是从旧版本继承下来的,遵循 Xcode 的所有项目升级建议。我已经仔细检查了这两个项目的所有构建设置,但看不到任何可以解释差异的内容。这是一个谜。但对于后代:如果您看到这个问题,请从头开始重建您的项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CoreAnalytics::Client / FrameworkConfiguration::init 内神秘崩溃 的相关文章

随机推荐