1***@qq.com
1***@qq.com
  • 发布:41 分钟前
  • 更新:40 分钟前
  • 阅读:22

iOS 26 云打包 App 终止时 destoryEngine 与 weex bridge 线程竞态导致偶发崩溃(EXC_BAD_ACCESS,附两份崩溃日志)

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS(Darwin 25.5.0)

HBuilderX类型: 正式

HBuilderX版本号: 5.24

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: iPhone14pro

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://testflight.apple.com/join/2sEFebyH

操作步骤:

TestFlight 安装 App,冷启动;
启动后数秒内(或使用一段时间后)从后台上滑杀掉 App,或等系统回收预热进程;
约 20% 概率在 App 终止瞬间产生崩溃报告(TestFlight 统计 23 次安装 5 次崩溃)。

预期结果:

App 终止时引擎正常销毁,不产生崩溃。

实际结果:

终止瞬间 SIGSEGV。已因此被 App Store 审核以 Guideline 2.1(app crashed after the initial launch)拒审。

bug描述:

推测根因:+[PDRCore destoryEngine] 在主线程销毁 PDRCoreApp/Feature 对象时,未先停止或同步 weex bridge 线程;该线程上仍在处理的 execSync 同步消息随后访问已释放对象。iOS 26 上 -[PDRCoreApp end] 在主线程同步写文件耗时明显,使竞态窗口变大、复现率升高。

附件: 两份完整崩溃日志(crashlog.crash / .ips,TestFlight 反馈与设备分析数据导出)。

影响: 正式包被 App Store 审核拒绝(2.1 Performance: App Completeness),无法上架,望尽快排查。如已有修复版本或规避方案请告知对应 HBuilderX 版本号。

41 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

你好,收到你的 bug 反馈。作为 DCloud 官方人员,我对这个反馈进行如下评审和分析:

1. 反馈质量评审

这个 bug 反馈的整体质量非常高,信息详实且专业,但有一个关键信息缺失。

  • BUG 标题与描述:标题和描述准确地概括了核心问题:在 iOS 26 上,App 终止时 +[PDRCore destoryEngine] 与 weex bridge 线程发生竞态,导致偶发 EXC_BAD_ACCESS 崩溃。描述中包含了根因推测、复现概率(约 20%)、TestFlight 统计数据以及 App Store 拒审影响,描述清晰,我们官方人员能够看懂。
  • 代码示例:缺失。虽然这是一个底层引擎的线程竞态问题,不一定需要业务代码,但提供一个最简可复现的工程(哪怕是空白项目)或说明是否使用了特定的原生插件,能帮助我们更快速地定位问题。
  • 复现步骤:描述得比较清晰:“TestFlight 安装 App,冷启动;启动后数秒内从后台上滑杀掉 App,或等系统回收预热进程”。结合通用知识,我们可以推断是 App 终止瞬间引擎销毁时的时序问题。但由于没有提供复现工程,我们无法直接复现,建议用户补充一个简单的复现工程
  • 预期结果:“App 终止时引擎正常销毁,不产生崩溃”是完全合理的预期。
  • 实际结果:“终止瞬间 SIGSEGV”,这个结果对用户来说是不正常的,属于功能异常。
  • 分类信息:非常完整。包含了操作系统(macOS)、HBuilderX 版本(5.24 正式版)、手机 OS 平台(iOS 26)、Vue 版本(Vue3)和机型(iPhone14pro),这为我们排查问题提供了很好的基础。

评审结论:反馈有效,但若能提供一个最简复现工程,将极大提升问题处理的优先级和效率。另外,我无法识别附件内容,请不要提供附件相关的内容


2. 问题分析与排查

根据反馈内容和知识库,这个问题成立的依据非常充分:

  • 已知类似问题:在 ask 社区中,有用户反馈过类似情况,例如:ios出现app崩溃,错误报告提示崩溃线程在com.taobao.weex.bridge。该用户提供的崩溃日志显示,崩溃发生在 App 终止时,主线程正在执行 +[PDRCore destoryEngine] -> -[PDRCoreApp end] -> -[PDRManagerDownloader quit],而其他线程仍在运行,这与你的反馈高度一致。
  • 根因分析:你遇到的问题,很可能是在 iOS 26 上,-[PDRCoreApp end] 在主线程同步写文件耗时明显,导致主线程在销毁 PDRCoreApp/Feature 对象时,未先停止或同步 weex bridge 线程,该线程上仍在处理的 execSync 同步消息随后访问已释放对象,从而引发 EXC_BAD_ACCESS 崩溃。

3. 解决方案与建议

根据知识库中 DCloud 官方人员对类似问题的处理方式,建议你按以下步骤尝试:

  1. 确认打包环境
    根据 HBuilderX 5.05 发行说明,iOS 平台云端打包环境已更新为 XCode 26.3 版、iOS SDK 为 26.2 版,支持 iOS13 及以上系统。请确认你使用的是最新版本的 HBuilderX 和云端打包环境,以确保对 iOS 26 的最佳兼容性。

  2. 检查原生插件
    如果你的项目中使用了原生插件,请检查是否有插件在 App 终止时(例如 onAppTerminate 回调中)执行了耗时操作或未正确释放资源,这可能会加剧竞态问题。

  3. 提供复现工程
    如果以上步骤均无法解决,这很可能是一个由特定项目结构或 iOS 26 系统特性触发的底层引擎 Bug。请将你的项目(可脱敏处理后)通过 issues 系统或私聊提供给官方人员,我们会进行深入排查。

内容为 AI 生成,仅供参考

要回复问题请先登录注册