1***@qq.com
1***@qq.com
  • 发布:2026-10-12 17:20
  • 更新:2026-10-12 17:22
  • 阅读:31

【报Bug】uni-app 鸿蒙(Vue3)逻辑层确定性崩溃:SIGSEGV in libv8_shared.so,运行 ~74 秒必崩,与应用代码定时器无关

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 12.7.6

HBuilderX类型: 正式

HBuilderX版本号: 5.26

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: 华为畅享 90 Plus(JDY-AL50),HarmonyOS 7.0.0.109

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:
  1. HBuilderX 5.26(launcher-harmony 5.26.2026091619)新建或使用任意 Vue3 uni-app 工程编译到鸿蒙真机(无需 web-view、无需特殊业务代码,普通列表页即可)
  2. 应用冷启动,进入首页后保持前台静置,不做任何操作
  3. 等待约 75 秒,应用闪退

复现率 100%(5/5 次),设备:华为畅享 90 Plus(JDY-AL50),HarmonyOS 7.0.0.109,debug 包。
已排除应用层因素:注释掉工程内所有 1 秒定时器并解包 HAP 确认改动在包内,仍 ~74 秒必崩;hilog 显示 arkweb/cef 层 ExecuteJavaScriptExt 仍精确每秒一次直到崩溃,该周期性任务来自 uni-app 鸿蒙运行时自身。

预期结果:

应用在前台静置时保持稳定运行,不发生崩溃。

实际结果:

进入前台 73~75 秒时确定性 SIGSEGV 闪退(5 次崩溃时间分别为 73.5 / 74.4 / 74.7 / ~74 / 74 秒)。

崩溃签名(5 次完全一致):

  • Reason: Signal:SIGSEGV(SEGV_MAPERR)@0x006b9bb5c6xxxx84,坏指针高位 0x6b6b9bb5 五次一致,仅低位漂移
  • 崩溃线程为 uni-app 逻辑层(自带 libjsruntime.so,build-id 568836a4e09487a421f537fe8583aa75d31c5923,与 HBuilderX 5.26 SDK 逐位一致)经 OH_JSVM_CallFunction 进入系统 V8(libv8_shared.so)
  • JS 栈语义:Vue3 响应式 Proxy 键式赋值(Builtins_ProxySetProperty → Runtime_SetKeyedProperty)→ set trap 内嵌套第二次键式赋值 → 崩在 V8 字节码 JumpIfToBooleanFalseHandler
  • 进程 Rss ~444MB,非 OOM;疑似引擎堆破坏 / GC 后使用,非业务 JS 空指针

附件:5 份 cppcrash(同栈同 build-id)、hilog 全程录制 2 段。可能与 220806、220578 同源(4.31+ 逻辑层迁 JSVM 后 libv8_shared 崩溃)。

bug描述:

应用冷启动进入首页(普通列表页,无 web-view 组件)后,每次都在进入前台 73~75 秒时崩溃(5 次崩溃分别为 73.5 / 74.4 / 74.7 / ~74 / 74 秒),前台使用中、进程 Rss ~444MB(非 OOM,设备可用内存 2.7GB)。

2026-10-12 17:20 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

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

一、反馈内容完整性评审

整体来看,这是一份质量较高的 bug 反馈,关键信息基本齐备:

  1. BUG 标题与描述:标题准确概括了核心要素(鸿蒙、Vue3、SIGSEGV in libv8_shared.so、~74 秒确定性崩溃、与应用定时器无关)。描述部分非常专业:

    • 提供了 5 次崩溃的具体时间数据(73.5 / 74.4 / 74.7 / ~74 / 74 秒),“确定性崩溃”的结论有数据支撑;
    • 排除了 OOM(Rss ~444MB,设备可用内存 2.7GB);
    • 崩溃签名细节充分:坏指针高位 0x6b6b9bb5 五次一致、仅低位漂移,这类观察对判断内存释放后使用(use-after-free)类问题很有价值;
    • 给出了崩溃线程、libjsruntime.so build-id 与 HBuilderX 5.26 SDK 逐位比对的结论,以及 JS 栈语义分析(Builtins_ProxySetProperty → Runtime_SetKeyedProperty → JumpIfToBooleanFalseHandler);
    • 排除性验证扎实:注释全部 1 秒定时器并解包 HAP 确认改动在包内、hilog 中 arkweb/cef 层 ExecuteJavaScriptExt 周期性观察,这些工作有效支持了“非业务代码问题”的判断。
  2. 代码示例:缺失。你描述“无需 web-view、无需特殊业务代码,普通列表页即可”,这对理解复现条件有帮助,但为了让官方人员拿到后无需调整即可直接编译验证,建议补充一个最简可复现工程(可脱敏)。

  3. 复现步骤:基本清晰(新建/任意 Vue3 工程 → 编译到鸿蒙真机 → 冷启动前台静置 → ~75 秒崩溃,复现率 100%,5/5 次)。配合“任意工程均可”的说法理论上可复现,但仍建议附上你实际使用的最简工程,消除环境差异带来的验证障碍。

  4. 预期结果:“前台静置保持稳定运行”是完全合理的预期。

  5. 实际结果:描述详细,包含崩溃签名、崩溃栈、内存状态及初步分析,不属于误报。

  6. 分类信息:基本完整(Mac 12.7.6、HBuilderX 5.26 正式版、HarmonyOS NEXT、Vue3、华为畅享 90 Plus JDY-AL50)。有一处需要确认:分类中“手机OS系统版本”填写的是 HarmonyOS 6.0.0,但设备机型处写的是 HarmonyOS 7.0.0.109,两者不一致,请确认设备实际系统版本,避免影响排查定位。

另外需要说明:我无法识别你提到的附件(5 份 cppcrash、2 段 hilog 录制),请将崩溃日志的关键内容(Reason、Fault thread info、Registers、Memory near registers、Maps 中 libv8_shared/libjsruntime 的映射段等,参考鸿蒙官方 Cpp Crash 日志规格)以文本形式直接补充在反馈正文中。

二、问题是否成立的分析

从知识库检索到的高度相似案例来看,这个问题大概率成立,且并非孤例:

  1. ask 社区 220883:HBuilderX 5.15、nova 12 Ultra、HarmonyOS 6.0.0,偶发 SIGSEGV(SEGV_MAPERR),坏指针同样为 0x006b... 开头特征;崩溃栈同样是 Builtins_JumpIfToBooleanFalseHandler → v8::Object::SetProperty → Runtime_SetKeyedProperty → Builtins_ProxySetProperty → OH_JSVM_CallFunction,调用栈末端同为 OH_JSVM_CallFunction 由 libjsruntime.so 驱动,崩溃时内存充足(RSS 400-470MB)排除 OOM——与你反馈的特征几乎完全吻合。

  2. ask 社区 220578:HBuilderX 5.08、Mate 60 Pro,鸿蒙 vue3 应用 SIGSEGV,可稳定打出 libjsruntime.so / libv8_shared.so 栈;该帖关联案例中记录了“寄存器值 0x6b6b 开头为典型的内存释放后填充模式(freed memory pattern),确认为 V8 内部 Proxy 对象的 use-after-free”,崩溃链路同样是 ProxySetProperty → JumpIfToBooleanFalseHandler。

你反馈中“坏指针高位 0x6b6b9bb5”的观察与上述案例中“0x6b6b 为 freed memory pattern”的分析一致,且崩溃栈形态、“非 OOM”、“V8 引擎层操作已损坏对象”等特征多重吻合,可以认为你反馈的问题与 220578、220883 属于同一类运行时/引擎层内存问题,而非你的业务代码问题。你在反馈中主动关联同源 case 的做法是正确的。

同时需要说明两点:

  • 你在反馈中确认的使用方式(Vue3 项目编译到鸿蒙)在官方支持范围内(自 HBuilderX 4.27 起 uni-app 支持 HarmonyOS Next 平台,仅支持 Vue3 项目),可以排除“用法不支持”的因素;
  • 上述 ask 社区帖子目前均无官方处理结论,你提到的“4.31+ 逻辑层迁 JSVM 后 libv8_shared 崩溃”的根因推断,目前没有官方确认的依据,只能作为排查线索;知识库中也暂未检索到针对该崩溃的官方解决方案或已修复版本记录,因此暂时无法给出确认有效的规避方案。

三、后续建议

  1. 建议通过 DCloud ISSUE 系统(https://issues.dcloud.net.cn/)正式提交此问题,并将 5 份 cppcrash 的完整关键字段与 hilog 关键片段以文本形式附上,便于引擎侧符号化排查;
  2. 补充最简可复现工程(脱敏后),确保“任意 Vue3 工程 + 前台静置 ~75 秒”的复现路径可被官方直接验证;
  3. 确认并补充设备准确系统版本(6.0.0 还是 7.0.0.109),以及是否在其他机型/系统版本上复现过;
  4. 欢迎加入 uni-app鸿蒙化技术交流群 咨询,群中有相关专业的管理员和群友。

评审结论:反馈有效、质量较高,问题大概率成立(与知识库中多个同类崩溃的特征高度吻合),属于鸿蒙运行时/引擎层问题而非业务代码问题;但缺少最简复现工程,且附件我无法识别,建议按上述方式补充关键信息后通过 ISSUE 系统正式提交,便于排期排查。

内容为 AI 生成,仅供参考

要回复问题请先登录或注册