【问题标题】:XPC Process Crashes in older macOS due to lack of Sanitizers由于缺少消毒剂,旧 macOS 中的 XPC 进程崩溃
【发布时间】:2017-12-29 16:12:20
【问题描述】:

当我在 Xcode 9.1 中构建我的 macOS 应用程序的 Debug Build 并将其移动到运行 macOS 10.11 或 10.12 的 Mac 上进行测试时,我发现我的应用程序的 XPC 进程在加载时崩溃,并且崩溃报告表明原因是系统在旧系统中找不到新的 sanitizer 框架。好的,我知道这些框架在旧 macOS 版本中不存在。并且,如果我在 Xcode 的 Scheme 的 Run > Diagnosics 部分禁用 Address Sanitizer、Thread Sanitizer 和 Undefined Behavior Sanitizer,然后重新构建,问题就解决了。

这里有些事情没有意义。为什么 Xcode Scheme 的 Run 部分明显影响 Build?为什么只有 XPC 进程崩溃?

【问题讨论】:

  • @Glider Cc Glider.

标签: xcode macos address-sanitizer thread-sanitizer xcode-scheme


【解决方案1】:

为什么 Xcode Scheme 的 Run 部分明显影响 Build?

这确实没有意义,但可能有一个简单的解释。较旧的代码诊断工具(API 检查器、malloc 检查器等)不需要重新编译,因此将它们放入 Run 是有意义的。消毒剂也是诊断工具,因此开发人员认为最好将它们放在同一个菜单中并强制人们重新构建应用程序。

为什么只有XPC进程崩溃?

我在这里猜想,但 Asan 初始化通常非常复杂,尤其是在初始化其他库之后可能会发生。可能是主进程在初始化 Asan 之前启动了 XPC 子进程。

【讨论】:

  • 接受这个答案是我们最好的解释,甚至可能是正确的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
相关资源
最近更新 更多