xcode 12.4升级导致的objc内存和线程崩溃

Posted

技术标签:

【中文标题】xcode 12.4升级导致的objc内存和线程崩溃【英文标题】:Objc memory and threading crash caused by xcode 12.4 upgrade 【发布时间】:2021-04-19 15:35:36 【问题描述】:

在过去的几周里,我一直在尝试解决一个看似随机出现的崩溃问题。我相信这与使用 12.3 中的 xcode 12.4 创建的构建相吻合。我的同步操作开始崩溃,内存中出现EXC_BAD_ACCESS 崩溃。

我正在使用 NSOperationQueue。我尝试过使用僵尸对象,但因为错误出现在 block 中,所以我看不到它们。

我的线程如下所示:

队列视图显示developerSubmittedBlockToNSManagedObjectContextPerform

有人对可能导致问题的原因提出建议吗?或者其他方法来追踪它?谢谢

【问题讨论】:

也许是 TSAN:developer.apple.com/documentation/xcode/… 谢谢,我以前没有读过这个工具。我试试看 【参考方案1】:

对于任何可能遇到类似问题的人,我们最终将问题归结为数据库链接的核心数据问题。

我们的数据库实体之间缺少一些反向关系。主要理论是,由于不存在关系,系统将解除分配上下文。这将引发无用的线程问题。

这些关系多年来一直处于这种状态,我们认为在最近的 excode 更新中,内存管理系统可能已经更新,从而暴露了问题。

【讨论】:

以上是关于xcode 12.4升级导致的objc内存和线程崩溃的主要内容,如果未能解决你的问题,请参考以下文章

xcode8.0升级之后公司项目遇到的问题

为 Xcode 项目创建单元测试会导致错误:显示最近的消息:-1:未定义符号:_OBJC_CLASS_$_FBSDKCodelessIndexer

Xcode 12.4 在 Ios 15 上是不是有解决方法?

不知道如何在 SwiftUI (Xcode 12.4) 中打开地图

如何用XCode创建Objective-c和C++的混编工程?

Xcode 11.7(12.4)/13.2的signing和sandbox配置截图对比