我们有一个关于Classic API的项目。对于32位和64位iOS设备,一切都运行良好。
然后我们迁移到 Unified API 。应用程序开始在某些设备(主要是64位设备)上崩溃。它在许多不同的地点和情况下崩溃。这些崩溃很难预测和重现。但是生产版本中的很多用户都面临着这种崩溃。
目前我们有一个版本的应用程序(让我们称之为版本1)在生产中使用Xamarin.iOS 8.6(稳定通道)为iOS SDK 8.1构建。
我们通过Crittercism(崩溃报告服务)收集了大量类似的崩溃。所有崩溃都是 SIGSEGV(原因:SEGV_MAPERR),但可能有不同的堆栈跟踪。看起来有些崩溃只发生在64位设备上。
然后我们构建了另一个版本的应用程序来重现该问题(版本2)。它是使用适用于iOS SDK 8.2的Xamarin.iOS 8.8(稳定通道)构建的,并且打开了调试选项。
现在我们有类似的崩溃。其中大多数发生在后台线程(不是主UI线程)上。现在所有崩溃都是 SIGBUS(原因:BUS_ADRERR)。
这种崩溃的根本原因是什么?如何诊断和修复它?
答案 0 :(得分:0)
迁移到Unified API后我遇到了类似的问题,对我来说问题是在后台线程中处理了一些可视对象。
这适用于Classic API,但在升级后开始崩溃。
因此,请确保在UI线程上处理对象,或者在没有必要时避免处置。这可能是在收集对象时在后台线程上发生崩溃的原因。
希望这有帮助