- 打开 App(UniApp 打包 iOS 应用)。
- 正常进入首页。
- 将 App 切到后台约 1~2 分钟。
- 再次切回前台。
- 会出现 App 直接被系统关闭的情况(没有进入 JS 层,没有报错提示)。
- 在 Xcode 查看 crash log,崩溃码为 0x8BADF00D(watchdog)。
- 发布:2025-12-09 19:57
- 更新:2025-12-10 01:11
- 阅读:23
【报Bug】iOS 端 App 被 Watchdog 杀死,主线程卡死在 H5CoreExceptionHandler → PTNetInfo → CoreTelephony
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 11 家庭中文版
HBuilderX类型: 正式
HBuilderX版本号: 4.85
手机系统: iOS
手机系统版本号: iOS 26
手机厂商: 苹果
手机机型: iPhone 14 Pro Max
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
App 应正常从后台恢复前台显示,不应该被系统 watchdog 判定为无响应。
App 应正常从后台恢复前台显示,不应该被系统 watchdog 判定为无响应。
实际结果:
App 切回前台时直接被系统杀死,出现 watchdog 崩溃:
错误码:
0x8BADF00D
"scene-update watchdog transgression (exceeded 10 seconds limit)"
关键主线程调用栈如下:
+[H5CoreExceptionHandler getParametersWithLog:]
+[H5CoreExceptionHandler getParametersWithLog:withType:withCurApp:withJSUrl:]
+[PTNetInfo netType]
+[PTNetInfo reachabilityStatusForFlags:]
-[CTTelephonyNetworkInfo init]
-[CoreTelephonyClient synchronousProxyWithErrorHandler:]
_dispatch_sync_f_slow
分析:UniApp / 5+ 运行时内部(H5CoreExceptionHandler → PTNetInfo)在主线程同步调用 CoreTelephony 以获取网络类型,导致主线程 10 秒无响应,被 iOS watchdog 强制终止。
App 切回前台时直接被系统杀死,出现 watchdog 崩溃:
错误码:
0x8BADF00D
"scene-update watchdog transgression (exceeded 10 seconds limit)"
关键主线程调用栈如下:
+[H5CoreExceptionHandler getParametersWithLog:]
+[H5CoreExceptionHandler getParametersWithLog:withType:withCurApp:withJSUrl:]
+[PTNetInfo netType]
+[PTNetInfo reachabilityStatusForFlags:]
-[CTTelephonyNetworkInfo init]
-[CoreTelephonyClient synchronousProxyWithErrorHandler:]
_dispatch_sync_f_slow
分析:UniApp / 5+ 运行时内部(H5CoreExceptionHandler → PTNetInfo)在主线程同步调用 CoreTelephony 以获取网络类型,导致主线程 10 秒无响应,被 iOS watchdog 强制终止。
bug描述:
我们上线的 UniApp App 在 iOS(尤其是 iOS 16/17/18 Beta)设备上多次出现被系统直接杀死的问题,错误码为 0x8BADF00D,属典型的 Watchdog 10 秒超时崩溃。
苹果Crash Log调用链如下:
Thread 0 Crashed:
+[H5CoreExceptionHandler getParametersWithLog:]
+[H5CoreExceptionHandler getParametersWithLog:withType:withCurApp:withJSUrl:]
+[PTNetInfo netType]
+[PTNetInfo reachabilityStatusForFlags:]
-[CTTelephonyNetworkInfo init]
-[CoreTelephonyClient synchronousProxyWithErrorHandler:]
_dispatch_sync_f_slow
→ 被 FrontBoard watchdog 杀死(foreground 10s timeout)
系统报告:
scene-update watchdog transgression: exhausted real (wall clock) time allowance of 10.00 seconds
code: 0x8BADF00D
2 个回复
Ask小助手
该bug反馈内容较为完整,问题描述清晰详细,包含崩溃调用栈、错误码(0x8BADF00D)、复现步骤及环境信息。反馈中明确指出主线程同步调用CoreTelephony导致iOS Watchdog 10秒超时,符合iOS系统机制特性。分类信息完整,包含HBuilderX 4.85版本、iOS 26系统、Vue3等关键信息。
经核查知识库,发现多个iOS平台相关修复记录:4.81版本修复了video组件在nvue页面返回时可能引发崩溃的问题;4.82版本修复了iOS平台input组件在scrollView中的键盘遮挡问题;4.83版本新增了对iPhone 17系列设备的支持。特别值得注意的是,知识库中多次提及iOS 18系统兼容性修复(如"iOS平台 修复 iOS 18 系统调用拨打电话等API失败的Bug"),而用户反馈问题在iOS 16/17/18 Beta设备频发,表明该问题具有平台相关性。
该bug成立,属于典型的iOS主线程阻塞问题。知识库显示DCloud持续优化iOS平台兼容性,但未直接提及H5CoreExceptionHandler→PTNetInfo调用链的修复。建议用户升级至最新HBuilderX正式版(当前知识库最新记录为4.83.2025101713-alpha),因后续版本可能已包含网络检测异步化优化。若仍复现,可参考App-iOS平台注意事项调整网络请求逻辑,避免主线程同步调用系统API。
雨点 (作者)
目前的解决方式是找到iOS的crash日志,定位卡死的函数,写一段hook替换掉原来卡死的函数
要回复问题请先登录或注册
公告
更多>相关问题