Unity ARFoundation 4.0.8空指针引用导致运行30分钟以上崩溃求助
问题诊断
从提供的崩溃日志可以直接定位问题根源:
- 错误类型是native层空指针解引用(SIGSEGV SEGV_MAPERR,fault addr 0x8)
- 崩溃发生在ARCore服务的原生代码逻辑中,触发线程为相机帧读取线程
ImageReader-192 - 运行30分钟偶发的特性,符合长时间运行后ARCore内部资源引用失效、或旧版组件已知bug的特征
解决步骤
- 优先升级配套组件版本:你当前使用的AR Foundation 4.0.8、ARCore XR Plugin 4.0.8属于早期4.x版本,存在多个已知的长时间运行相机导致的原生崩溃问题,可先升级到Unity 2019.4分支支持的最高AR Foundation 4.1.x系列版本,ARCore XR Plugin同步升级到相同版本,该版本修复了大量相机帧回调相关的空指针异常。
- 检查相机帧手动处理逻辑:如果你的代码中有手动获取
XRCameraImage原始相机帧的逻辑,必须保证每一个获取到的实例在使用完成后都主动调用Dispose()释放,禁止直接丢弃未释放的实例,避免资源泄漏导致ARCore内部引用失效。 - 裁剪ARCore运行特性:在ARCore Android配置中关闭不必要的功能,如不需要的平面跟踪、点云、人脸/身体跟踪等特性,减少ARCore内部的资源占用和回调逻辑复杂度。
- 增加临时规避逻辑:可以在应用累计运行2530分钟左右,选择用户无感知的场景(如AR内容切换、页面返回重进的间隙),主动销毁ARSession实例,间隔12秒后重新初始化ARSession,重置ARCore运行上下文,规避长时间运行触发的内部异常。
- 升级测试设备的ARCore服务:你测试设备上预装的ARCore服务版本可能较低,升级到最新版ARCore服务后再做复现测试,排除旧版ARCore服务本身的bug。
内容的提问来源于stack exchange,提问作者Momo
相关产品推荐
相关产品推荐

