01-应用异常退出
本文件汇总该版本中归类为应用异常退出的历史修复,包含 CppCrash、JS Crash、abort、兼容性崩溃以及生命周期与并发场景下最终表现为进程退出的问题。
1. 移除正在滚动的 ScrollView 时崩溃
- 修改日期:2023-07-12
- 版本:0.72.27
- 问题描述:ScrollView 仍处于滚动状态时被移除,RNScrollView.ets 中滚动回调与节点销毁并发交错,导致销毁后的滚动对象继续被访问而崩溃
- 影响模块:ScrollView
- 提交 / PR:f3f208734
- 详细修复内容:修复正在滚动的 ScrollView 被移除时的崩溃,重点处理滚动状态与节点销毁的并发时序。
2. touch 崩溃批量修复
- 修改日期:2023-09-13
- 版本:0.72.27
- 问题描述:TouchDispatcher 在触摸事件分发链路上存在多处边界条件缺失,在特定输入序列下批量触发崩溃,统一补充边界保护
- 影响模块:Touch / 事件分发
- 提交 / PR:253ac576e
- 详细修复内容:对 touch 和事件分发链路中的多处崩溃进行批量修复,整体降低输入事件路径上的不安全访问。
3. touch target 被删除后 dispatch 崩溃
- 修改日期:2023-09-14
- 版本:0.72.27
- 问题描述:TouchDispatcher 分发触摸事件时,目标 view 已被删除但 target 引用未及时失效,继续 dispatch 导致访问已删除对象崩溃
- 影响模块:Touch / 事件分发
- 提交 / PR:1517e8275
- 详细修复内容:修复事件分发目标已被删除时仍继续 dispatch 的崩溃问题。
4. textShadow 应用于空字符串时崩溃
- 修改日期:2023-10-02
- 版本:0.72.27
- 问题描述:文本内容为空字符串时仍继续应用 textShadow 相关布局或绘制逻辑,空文本边界条件未覆盖导致崩溃
- 影响模块:Text / Shadow
- 提交 / PR:dc5c7e3e4
- 详细修复内容:修复 textShadow 作用于空字符串时的边界条件崩溃。
5. null targetTags 导致应用崩溃
- 修改日期:2023-10-20
- 版本:0.72.27
- 问题描述:触摸事件或命中测试链路中 targetTags 为空时,事件分发逻辑仍按非空集合继续处理,导致空值访问崩溃
- 影响模块:Touch / 事件分发
- 提交 / PR:13ca80ace
- 详细修复内容:修复 targetTags 为空时事件分发链路的空值访问问题。
6. Text 内单 View 导致崩溃
- 修改日期:2023-10-26
- 版本:0.72.27
- 问题描述:Text 中包含单个 View 子节点时,组件组合不满足平台渲染约束,布局和节点转换流程访问异常状态导致崩溃
- 影响模块:Text / View
- 提交 / PR:8c0bf9d60
- 详细修复内容:修复 Text 与单个 View 组合时的兼容性崩溃,避免布局和渲染路径出现非法访问。
7. Text 内部嵌套 View 导致崩溃
- 修改日期:2023-11-06
- 版本:0.72.27
- 问题描述:Text 节点内部嵌套 View 的组合在 OpenHarmony 侧渲染/布局兼容性不足,节点树处理落入不支持分支导致崩溃
- 影响模块:Text / View
- 提交 / PR:0cb388fa3
- 详细修复内容:修复 Text 内嵌 View 场景下的兼容性崩溃,保证不同节点组合下的渲染和布局安全。
8. 拖拽时崩溃
- 修改日期:2023-12-13
- 版本:0.72.27
- 问题描述:拖拽手势触发时 ComponentManagerRegistry 中组件查找出现状态不一致,返回无效引用后继续访问触发崩溃
- 影响模块:PanResponder / 手势
- 提交 / PR:217af7248
- 详细修复内容:修复拖拽和手势处理阶段的崩溃,降低 PanResponder 事件处理过程中的非法访问。
9. 应用重启时 RNInstance 清理崩溃
- 修改日期:2023-12-13
- 版本:0.72.27
- 问题描述:应用再次启动前,上一轮 RNInstance 清理尚未彻底完成,NapiBridge、RNInstanceRegistry 和 SurfaceHandle 残留状态在重启时被再次访问导致崩溃
- 影响模块:RNInstance / 生命周期
- 提交 / PR:d537f7e63
- 详细修复内容:处理应用重启场景下 RNInstance 清理顺序异常导致的崩溃。
10. NativeAnimated 析构时崩溃
- 修改日期:2023-12-14
- 版本:0.72.27
- 问题描述:NativeAnimatedTurboModule 析构时,事件分发器或动画资源仍与模块互相持有引用,释放链路未完全断开导致崩溃
- 影响模块:NativeAnimated
- 提交 / PR:17ebfd739
- 详细修复内容:修复 NativeAnimated 析构时的对象释放问题,避免释放链路上的异常访问。
11. 取消订阅 window 事件时崩溃
- 修改日期:2024-01-18
- 版本:0.72.27
- 问题描述:RNAbility 取消订阅 window 事件时,订阅句柄已失效或重复反注册,解绑流程继续执行导致崩溃
- 影响模块:WindowManager
- 提交 / PR:02847a056
- 详细修复内容:修复取消订阅窗口事件过程中的崩溃,避免事件解绑后继续访问无效窗口对象。
12. Image 加载反复崩溃
- 修改日期:2024-01-25
- 版本:0.72.27
- 问题描述:RNImage 在图片资源重复加载或状态重置时,ArkTS 侧状态机逻辑不完整,导致异常路径反复触发崩溃
- 影响模块:Image
- 提交 / PR:e5b10bcf6
- 详细修复内容:处理图片重复加载过程中的反复崩溃,重点稳定图片加载状态和缓存访问。
13. cache key 未提供时崩溃
- 修改日期:2024-03-15
- 版本:0.72.27
- 问题描述:图片缓存流程依赖 cache key 定位缓存项,但请求未提供 key 时仍继续参与缓存读写,导致空键值路径崩溃
- 影响模块:Image Cache
- 提交 / PR:fc67d71ea
- 详细修复内容:修复图片缓存 key 缺失时的崩溃,补齐空值和默认值处理逻辑。
14. ArkTS 子树重复创建 + 崩溃 Bug
- 修改日期:2024-04-09
- 版本:0.72.27
- 问题描述:ArkTS 子树在特定挂载流程下被重复创建或重复初始化,造成节点树状态错乱,随后在二次挂载/销毁时崩溃
- 影响模块:ArkTS 组件
- 提交 / PR:cd79843b5
- 详细修复内容:修复 ArkTS 子树重复创建导致的崩溃,避免节点重复挂载或重复初始化。
15. TextInput keyboardType 无效值导致应用崩溃
- 修改日期:2024-04-09
- 版本:0.72.27
- 问题描述:TextInput 接收到 OpenHarmony 侧不支持或未映射的 keyboardType 值时,键盘类型转换逻辑未做兜底处理,导致应用崩溃
- 影响模块:TextInput
- 提交 / PR:c0da144e7
- 详细修复内容:修复 TextInput 接收无效 keyboardType 值时的边界处理缺陷。
16. 删除 tag 时崩溃
- 修改日期:2024-04-19
- 版本:0.72.27
- 问题描述:ComponentInstanceRegistry 删除 tag 时,注册表内部状态更新与外部访问并发交错,导致删除后再次读取该 tag 触发崩溃
- 影响模块:ComponentInstance
- 提交 / PR:701dfbb88
- 详细修复内容:修复删除 tag 场景下组件实例访问异常导致的崩溃。
17. XComponent 析构崩溃
- 修改日期:2024-04-26
- 版本:0.72.27
- 问题描述:XComponentSurface 析构时,对底层 surface 句柄和资源释放时机控制不当,导致析构路径访问无效对象崩溃
- 影响模块:XComponent
- 提交 / PR:d0cf14643
- 详细修复内容:修复 XComponent 析构阶段的崩溃,避免销毁过程中的悬空访问。
18. onConfigurationUpdate() 崩溃
- 修改日期:2024-04-29
- 版本:0.72.27
- 问题描述:配置更新回调触发时,配置对象刷新与下游通知链路状态不同步,onConfigurationUpdate() 在不完整状态下执行导致崩溃
- 影响模块:配置更新
- 提交 / PR:d27c89118
- 详细修复内容:修复配置更新回调中的崩溃,确保配置变更场景下对象刷新和通知流程稳定。
19. Text 组件崩溃
- 修改日期:2024-05-04
- 版本:0.72.27
- 问题描述:TextComponentInstance 在文本渲染或布局计算过程中,对空状态或无效属性的访问缺少保护,触发崩溃
- 影响模块:Text
- 提交 / PR:3d5281d5c
- 详细修复内容:针对 Text 组件的崩溃场景进行修复,提升文本节点访问与布局处理的安全性。
20. Image 组件崩溃修复
- 修改日期:2024-05-13
- 版本:0.72.27
- 问题描述:ImageNode 内部状态与 ImageComponentInstance 之间同步处理存在缺陷,图片资源生命周期管理不当导致崩溃
- 影响模块:Image
- 提交 / PR:a341ec65c
- 详细修复内容:对 Image 组件崩溃问题进行专项修复,目标是收敛图片组件的空对象和非法访问场景。
21. UIAbility 问题引发的崩溃规避
- 修改日期:2024-05-13
- 版本:0.72.27
- 问题描述:宿主 UIAbility 生命周期和 RNOH 期望的初始化/回收时序存在差异,特定宿主环境下会触发兼容性崩溃,因此增加规避处理
- 影响模块:UIAbility
- 提交 / PR:fa8c0de6d
- 详细修复内容:针对 UIAbility 侧兼容性问题做崩溃规避处理,降低宿主环境差异带来的稳定性风险。
22. 找不到 descriptor 时崩溃
- 修改日期:2024-05-20
- 版本:0.72.27
- 问题描述:组件注册表查找 descriptor 失败后未及时中断流程,后续仍基于缺失 descriptor 继续执行组件处理导致崩溃
- 影响模块:ComponentRegistry
- 提交 / PR:81e70a9b2
- 详细修复内容:修复 descriptor 查找失败后未及时返回造成的崩溃。
23. schedulerDidSetIsJSResponder 崩溃
- 修改日期:2024-05-22
- 版本:0.72.27
- 问题描述:SchedulerDelegateCAPI 处理 schedulerDidSetIsJSResponder 回调时,对 responder 状态和对象有效性判断不足,导致设置响应者过程崩溃
- 影响模块:Scheduler
- 提交 / PR:084b13d04
- 详细修复内容:修复调度器在设置 JS responder 过程中的崩溃,稳定响应者切换流程。
24. schedulerDidSetIsJSResponder 线程安全问题
- 修改日期:2024-05-23
- 版本:0.72.27
- 问题描述:SchedulerDelegateCAPI 在设置 JS responder 状态时缺少线程安全保护,多个线程同时修改响应者状态会导致竞争和异常访问
- 影响模块:Scheduler
- 提交 / PR:cf8332cfb
- 详细修复内容:修复 schedulerDidSetIsJSResponder 相关的线程安全问题,降低调度器状态竞争。
25. Image 组件 FindLocalCacheByUri 崩溃
- 修改日期:2024-05-24
- 版本:0.72.27
- 问题描述:Image 组件通过 FindLocalCacheByUri 查找本地图片缓存时,对无效 URI 或空返回结果缺少边界处理,触发崩溃
- 影响模块:Image
- 提交 / PR:d21498c2a
- 详细修复内容:针对 Image 组件本地缓存查询流程中的崩溃进行修复,重点收敛 FindLocalCacheByUri 访问路径。
26. Image 组件崩溃
- 修改日期:2024-05-24
- 版本:0.72.27
- 问题描述:ImageComponentInstance 在图片加载或更新过程中,ImageNode 对象状态不一致,对空值和边界条件的保护缺失,触发崩溃
- 影响模块:Image
- 提交 / PR:1f3ebe237
- 详细修复内容:修复 Image 组件在特定访问路径上的崩溃问题,稳定图片相关对象与状态处理。
27. loadBundle 平台错误时崩溃
- 修改日期:2024-06-06
- 版本:0.72.27
- 问题描述:loadBundle 遇到平台环境不匹配、路径错误或平台专属分支异常时,加载失败后的容错路径缺失,直接导致崩溃
- 影响模块:Bundle Loader
- 提交 / PR:b86c553b9
- 详细修复内容:修复 loadBundle 遇到平台错误时缺少容错处理导致的崩溃。
28. HttpClient cookie 配置错误时崩溃
- 修改日期:2024-06-07
- 版本:0.72.27
- 问题描述:HttpClient 在设置 cookie 配置参数时,错误配置值未被拦截或降级处理,异常路径直接触发崩溃
- 影响模块:HttpClient
- 提交 / PR:b3906301a
- 详细修复内容:修复 HttpClient cookie 配置异常时的错误处理分支,避免因配置失败导致崩溃。
29. 清理 RNInstance 时崩溃
- 修改日期:2024-06-11
- 版本:0.72.27
- 问题描述:RNInstance 清理阶段,SchedulerDelegateCAPI、NapiBridge 和 RNInstanceRegistry 等多处对象回收顺序不一致,导致释放后仍被访问而崩溃
- 影响模块:RNInstance / 生命周期
- 提交 / PR:adf114703
- 详细修复内容:修复 RNInstance 清理阶段的崩溃,重点收敛生命周期终止时的对象回收顺序。
30. TextMeasureRegistry 线程安全问题
- 修改日期:2024-06-14
- 版本:0.72.27-1
- 问题描述:TextMeasureRegistry 在多线程同时读写文本测量缓存时缺少同步保护,导致测量结果容器状态竞争并可能触发崩溃
- 影响模块:TextMeasureRegistry
- 提交 / PR:51ead0ff2
- 详细修复内容:修复 TextMeasureRegistry 的线程安全问题,避免多线程读取或更新文本测量结果时崩溃。
31. stopSurface 注册时崩溃
- 修改日期:2024-06-15
- 版本:0.72.27-1
- 问题描述:XComponentSurface 执行 stopSurface 或其注册收尾流程时,Surface 生命周期状态判断不完整,重复处理已停止对象导致崩溃
- 影响模块:Surface
- 提交 / PR:c6fd86197
- 详细修复内容:修复 stopSurface 注册或收尾阶段的崩溃,避免 surface 停止流程访问异常对象。
32. touchTarget 不存在时崩溃
- 修改日期:2024-06-15
- 版本:0.72.27-1
- 问题描述:触摸事件分发时目标节点已不存在,但事件链路仍继续使用该 touchTarget,导致访问无效目标崩溃
- 影响模块:Touch / 事件分发
- 提交 / PR:f3261ee69
- 详细修复内容:修复事件分发目标不存在时继续访问造成的崩溃。
33. undefined descriptor 崩溃
- 修改日期:2024-06-15
- 版本:0.72.27-1
- 问题描述:ComponentRegistry 查找组件 descriptor 时返回 undefined,但后续流程仍继续创建或更新组件,导致无效 descriptor 被访问而崩溃
- 影响模块:ComponentRegistry
- 提交 / PR:53e47cc80
- 详细修复内容:修复 descriptor 不存在时继续访问造成的崩溃,补齐注册表查找失败路径处理。
34. propsType 无效时崩溃
- 修改日期:2024-06-19
- 版本:0.72.27-1
- 问题描述:组件更新过程中 propsType 取值无效或不匹配预期类型时,属性解析逻辑继续执行,导致非法类型访问崩溃
- 影响模块:Props / ComponentInstance
- 提交 / PR:06c6a2047
- 详细修复内容:修复 propsType 无效时缺少边界处理导致的崩溃。
35. startAnimatingNode 崩溃
- 修改日期:2024-06-27
- 版本:0.72.27-6
- 问题描述:NativeAnimatedTurboModule::startAnimatingNode 在目标动画节点状态不一致或节点不存在时执行启动逻辑,缺少边界保护触发崩溃
- 影响模块:NativeAnimated
- 提交 / PR:cf50cbee5
- 详细修复内容:针对 startAnimatingNode 执行时的崩溃进行修复,提升动画节点启动流程的健壮性。
36. WebSocket 断开时崩溃
- 修改日期:2024-07-08
- 版本:0.72.27-6
- 问题描述:WebSocketTurboModule 在断开连接和清理资源时,连接状态切换与回调解绑顺序不一致,导致断开阶段访问失效对象崩溃
- 影响模块:WebSocket
- 提交 / PR:732c4d0f4
- 详细修复内容:修复 WebSocket 断开连接时资源清理与状态切换过程中的崩溃。
37. configCookieSync 失败时崩溃
- 修改日期:2024-07-10
- 版本:0.72.29
- 问题描述:HttpClient 在执行 configCookieSync 时,cookie 同步配置失败后的异常分支未被正确处理,导致失败场景直接崩溃
- 影响模块:HttpClient / Cookie
- 提交 / PR:540c769af
- 详细修复内容:修复 cookie 同步配置失败时未正确处理异常、最终导致崩溃的问题。
38. Timer 在 Instance 释放后仍触发崩溃
- 修改日期:2024-07-16
- 版本:0.72.29
- 问题描述:RNInstance 已释放后,TimingTurboModule 持有的定时器仍继续触发回调,回调链路访问失效实例导致崩溃
- 影响模块:TimingTurboModule / 生命周期
- 提交 / PR:6e5f3f991
- 详细修复内容:修复 Instance 已释放后 timer 仍然触发的问题,避免定时器回调访问无效实例。
39. Release 模式下双下划线前缀导致崩溃
- 修改日期:2024-07-24
- 版本:0.72.35
- 问题描述:Release 模式下,带双下划线前缀的名称在压缩、混淆或解析流程中兼容性不足,运行时识别异常导致崩溃
- 影响模块:混淆 / Release
- 提交 / PR:7064f9eae
- 详细修复内容:修复 Release 模式下双下划线前缀命名在混淆或解析阶段引发的崩溃。
40. Worker TurboModule 线程错误导致崩溃
- 修改日期:2024-08-01
- 版本:0.72.29
- 问题描述:Worker TurboModule 的调用链路落在错误线程执行,ArkJS、ArkTSBridge 和 TurboModuleFactory 间线程归属不一致,触发跨线程崩溃
- 影响模块:Worker TurboModule
- 提交 / PR:8304fb316
- 详细修复内容:修复 Worker TurboModule 在错误线程执行导致的崩溃,确保模块调用遵循线程归属规则。
41. EventTarget 析构时崩溃
- 修改日期:2024-08-20
- 版本:0.72.29-3
- 问题描述:EventTarget 进入析构阶段后,RNInstanceCAPI 侧仍可能保留对其的引用或回调入口,继续访问已释放对象导致崩溃
- 影响模块:EventTarget / 生命周期
- 提交 / PR:7ebff3ae1
- 详细修复内容:修复 EventTarget 析构阶段的对象访问崩溃,稳定事件目标释放流程。
42. onUITick 中偶发崩溃
- 修改日期:2024-08-20
- 版本:0.72.29-3
- 问题描述:RNInstanceCAPI 在 onUITick 帧回调中读取实例或 UI 状态时缺少有效性保护,低概率与清理流程并发交错导致偶发崩溃
- 影响模块:UI Tick / 渲染
- 提交 / PR:0b9cc7c19
- 详细修复内容:修复 UI Tick 渲染节拍中的偶发崩溃,重点处理帧回调和 UI 状态读取之间的并发问题。
43. m_eventEmitter 为 nullptr 时崩溃
- 修改日期:2024-08-24
- 版本:0.72.29-3
- 问题描述:ModalHostViewComponentInstance 事件回调路径上未对 m_eventEmitter 进行空值检查,m_eventEmitter 为 nullptr 时解引用触发崩溃
- 影响模块:EventEmitter
- 提交 / PR:2dfa9c01f
- 详细修复内容:处理 EventEmitter 为 nullptr 时的崩溃场景,避免空对象参与后续事件分发流程。
44. JS 线程 napi_value 析构时崩溃
- 修改日期:2024-09-30
- 版本:0.72.33
- 问题描述:napi_value 在 JS 线程析构时,与 NapiBridge / RNOHAppNapiBridge 的生命周期配合不当,值对象在不安全时机释放导致崩溃
- 影响模块:NAPI / JS Thread
- 提交 / PR:0cd407c7a
- 详细修复内容:修复 JS 线程上 napi_value 析构阶段的崩溃,保证值对象析构发生在线程安全的时机。
45. TimingTurboModule 销毁时崩溃
- 修改日期:2024-10-17
- 版本:0.72.37-1
- 问题描述:TimingTurboModule 析构时,定时器或挂起回调仍可能继续访问模块内部状态,导致销毁阶段崩溃
- 影响模块:TimingTurboModule / 生命周期
- 提交 / PR:3f57947f2
- 详细修复内容:修复 TimingTurboModule 销毁过程中定时器或回调仍被访问的崩溃问题。
46. sort 崩溃
- 修改日期:2024-10-21
- 版本:0.72.37-1
- 问题描述:排序流程处理异常输入或非法比较条件时缺少边界防护,导致 sort 过程中访问无效数据并崩溃
- 影响模块:数据排序
- 提交 / PR:c822670b0
- 详细修复内容:修复排序过程中的崩溃,重点收敛比较逻辑和输入边界处理。
47. Modal 在窗口大小变化时崩溃
- 修改日期:2024-12-18
- 版本:0.72.39-13
- 问题描述:窗口尺寸变化时,ModalHostViewComponentInstance 内部布局与实例状态不同步,后续更新流程访问失效状态导致崩溃
- 影响模块:Modal
- 提交 / PR:1d58ed162 / !257
- 详细修复内容:修复窗口尺寸变化时 Modal 相关对象状态不一致导致的崩溃。
48. 取消 Alert 后再次点击按钮崩溃
- 修改日期:2024-12-31
- 版本:0.72.39-14
- 问题描述:Alert 已取消关闭后,按钮点击回调链路仍保留旧状态,再次点击时访问已失效的对话框上下文导致崩溃
- 影响模块:AlertDialog
- 提交 / PR:6709a2c00 / !360
- 详细修复内容:修复 Alert 取消后再次触发按钮回调时的崩溃,重点关注对话框关闭后的对象状态清理。
49. animationTick 崩溃
- 修改日期:2025-01-09
- 版本:0.72.39-14
- 问题描述:animationTick 帧回调发生时,RNInstanceArkTS / RNInstanceCAPI 未验证实例是否仍处于有效状态,继续驱动动画帧更新触发崩溃
- 影响模块:Animation
- 提交 / PR:6fc3a4e80 / !443
- 详细修复内容:围绕 animationTick 过程中的异常访问进行修复,减少动画更新周期中的崩溃。
50. 已销毁 Surface 上调用 updateConstraints 崩溃
- 修改日期:2025-01-23
- 版本:0.72.39-14
- 问题描述:Surface 已进入销毁流程后,RNInstancesCoordinator / RNSurface 仍继续对其调用 updateConstraints,导致对失效 Surface 的更新访问崩溃
- 影响模块:Surface / 生命周期
- 提交 / PR:432e5525f / !477
- 详细修复内容:修复 Surface 已销毁但仍继续调用 updateConstraints 的问题,避免失效 surface 被再次更新。
51. Animated 移除 native event 时崩溃
- 修改日期:2025-02-11
- 版本:0.72.53-1
- 问题描述:AnimatedNodesManager 移除 native event 监听时,对事件映射或动画节点的解绑顺序不正确,访问已移除对象导致崩溃
- 影响模块:NativeAnimated
- 提交 / PR:62fd10343 / !506
- 详细修复内容:修复 NativeAnimated 移除 native event 监听时的崩溃问题,保证事件解绑流程与对象状态一致。
52. HSP 目录下加载 bundle 崩溃
- 修改日期:2025-04-24
- 版本:0.72.67
- 问题描述:bundle 部署在 HSP 目录结构下时,Bundle Loader 仍按普通 HAR/HAP 路径解析资源位置,导致实际 bundle 文件无法定位,加载失败后直接进入崩溃分支
- 影响模块:Bundle Loader
- 提交 / PR:de132df4a / !864
- 详细修复内容:修复 HSP 目录场景下 bundle 加载路径不兼容导致的崩溃。
53. JSVMPointerValue 崩溃
- 修改日期:2025-05-22
- 版本:0.72.73
- 问题描述:JSVMRuntime 中 JSVMPointerValue / JSVMConverter 对象的持有与释放逻辑存在缺陷,在特定调用路径下导致非法内存访问崩溃
- 影响模块:JSVM / Runtime
- 提交 / PR:01034d112 / !990
- 详细修复内容:针对 JSVM PointerValue 相关的崩溃进行修复,重点处理 Runtime 侧对象持有与释放的安全性。
54. ArkUINode::setWidth 无返回值导致 SIGSEGV
- 修改日期:2025-06-10
- 版本:0.72.73
- 问题描述:NestedScrollViewHeaderComponentInstance 在 onLayoutChanged 中调用 ArkUINode::setWidth() 时,该接口返回路径不完整,调用方继续使用异常返回结果,最终在日志与布局链路中触发 SIGSEGV
- 影响模块:ArkUINode / NestedScrollView
- 提交 / PR:6caf76b84 / !1112
- 详细修复内容:NestedScrollViewHeaderComponentInstance 调用 ArkUINode::setWidth 时,由于实现中的返回路径不完整或异常路径处理不当,进一步触发 SIGSEGV。修复聚焦于补齐 setWidth 的实现逻辑,确保返回值和异常状态处理完整,避免调用链继续落入非法访问。
日志
Reason:Signal:SIGSEGV(SEGV_MAPERR)
Fault thread info:
Tid:16048, Name:com.rnoh.tester
#00 pc 0000000000108650 /data/storage/el1/bundle/libs/arm64/libc++_shared.so(std::__n1::locale::~locale()+8)
#01 pc 000000000005e124 /data/storage/el1/bundle/libs/arm64/libreact_render_scheduler.so(google::LogMessage::~LogMessage()+80)
#02 pc 00000000002ce154 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::ArkUINode::setWidth(float)+140)
#03 pc 000000000002d174 /data/storage/el1/bundle/libs/arm64/librnoh_nested_scroll.so(rnoh::NestedScrollViewHeaderComponentInstance::onLayoutChanged(...)+200)
#04 pc 000000000002e368 /data/storage/el1/bundle/libs/arm64/librnoh_nested_scroll.so
#05 pc 0000000000270610 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::MountingManagerCAPI::updateComponentWithShadowView(...)+288)
#06 pc 000000000026e680 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::MountingManagerCAPI::handleMutation(...)+2012)
#07 pc 000000000026d454 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::MountingManagerCAPI::didMount(...)+196)
#08 pc 0000000000257b9c /data/storage/el1/bundle/libs/arm64/librnoh.so
55. getSDKApiVersion 接口不支持多线程,SIGABRT Fatal: ecma_vm 多线程运行
- 修改日期:2025-08-21
- 版本:0.72.86
- 问题描述:RNOH_JS 线程在创建 ScrollNode / ArkUINode 等节点过程中调用 ArkTSBridge::getSDKApiVersion(),该接口底层会触发 EcmaVM::CheckThread(),由于不支持多线程运行而直接 SIGABRT
- 影响模块:ArkTSBridge / JSVM
- 提交 / PR:153005e69 / !1440
- 详细修复内容:OpenHarmony 的 getSDKApiVersion() 原生实现不支持多线程调用,在当前链路下会触发 JSVM 的 CheckThread() 检查并导致 SIGABRT。修复方案是以线程安全的原生能力封装 IsAtLeastApi14() 替代原调用,保持功能等价并规避多线程执行风险。
日志
Device info:HUAWEI Mate 60 Pro
Reason:Signal:SIGABRT(SI_TKILL)
LastFatalMessage:[default] [CheckThread:591] Fatal: ecma_vm cannot run in multi-thread! thread:3766 currentThread:5037
Fault thread info:
Tid:5037, Name:RNOH_JS
#00 pc 000000000019e77c /system/lib/ld-musl-aarch64.so.1(raise+212)
#01 pc 000000000014d17c /system/lib/ld-musl-aarch64.so.1(abort+20)
#02 pc 00000000003b59f0 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::EcmaVM::CheckThread() const+1056)
#03 pc 000000000051125c /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::JSThread::DoStackLimitCheck()+124)
#04 pc 00000000006781d4 /system/lib64/platformsdk/libark_jsruntime.so(panda::FunctionRef::CallForNapi(...)+372)
#05 pc 0000000000060fc8 /system/lib64/platformsdk/libace_napi.z.so(napi_call_function+200)
#06 pc 000000000071d2d0 /data/storage/el1/bundle/libs/arm64/librnoh.so(ArkJS::call(...)+84)
#07 pc 000000000073871c /data/storage/el1/bundle/libs/arm64/librnoh.so(ArkJS::call<0ul>(...)+116)
#08 pc 0000000000737c38 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::ArkTSBridge::getSDKApiVersion()+140)
#09 pc 000000000087e280 /data/storage/el1/bundle/libs/arm64/librnoh.so
#10 pc 000000000087e1f0 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::NodeApi::createNode(ArkUI_NodeType)+28)
#11 pc 000000000088b084 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::ArkUINode::ArkUINode(...)+256)
#12 pc 0000000000899b78 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::ScrollNode::ScrollNode(...)+88)
#13 pc 000000000075ad24 /data/storage/el1/bundle/libs/arm64/librnoh_app.so(facebook::react::RNCSpringScrollViewEventEmitter::RNCSpringScrollViewEventEmitter(...)+112)
56. RNInstance 销毁时 EventLoopTaskRunner::waitForSyncTask 崩溃
- 修改日期:2025-09-24
- 版本:0.72.96
- 问题描述:RNInstance 清理阶段,RNOH_CLEANUP 线程在等待同步任务完成时访问了失效任务状态,导致 EventLoopTaskRunner::waitForSyncTask 崩溃
- 影响模块:EventLoopTaskRunner
- 提交 / PR:5244cac3a / !1606
- 详细修复内容:针对 RNInstance 销毁期间同步任务等待逻辑导致的崩溃进行修复,避免清理线程阻塞或访问无效任务状态。
日志
Thread name:RNOH_CLEANUP
/data/storage/el1/bundle/libs/arm64/librnoh.so
/data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::EventLoopTaskRunner::waitForSyncTask crash)
57. 多个函数错误标注 noexcept 导致异常触发 abort
- 修改日期:2025-10-18
- 版本:0.72.96
- 问题描述:ArkUINode、ThreadTaskRunner、ComponentInstanceProvider 及多个 Delegate 析构函数、UIManagerBinding::get() 等路径被错误标注为 noexcept(true),逻辑异常一旦抛出就会直接走向 std::terminate 并触发 abort
- 影响模块:多处函数
- 提交 / PR:20e6ee02b / !1692
- 详细修复内容:系统修复多个析构函数和主业务路径函数的 noexcept 标注问题,涉及 ArkUINode、ThreadTaskRunner、ComponentInstanceProvider、多个 Delegate 虚析构以及 UIManagerBinding::get() 等关键路径。通过移除错误的 noexcept(true),让异常能够正常向上抛出并被捕获处理,而不是直接触发 std::terminate 导致 abort。
58. 自定义组件以 RCT 为前缀命名导致崩溃
- 修改日期:2025-10-26
- 版本:0.72.101
- 问题描述:自定义组件名称使用 RCT 前缀时,组件名映射逻辑与系统组件命名规则发生冲突,注册或查找阶段解析失败导致崩溃
- 影响模块:ComponentRegistry
- 提交 / PR:50800a854 / !1734
- 详细修复内容:修复自定义组件命名以 RCT 为前缀时的兼容性问题,避免注册或查找阶段崩溃。
59. noexcept 标注异常导致 abort
- 修改日期:2025-10-26
- 版本:0.72.101
- 问题描述:此前为修复异常传播而放宽的 noexcept 变更引入兼容性问题,部分函数的异常声明不当,导致异常传播和 ABI 兼容行为异常并触发 abort
- 影响模块:多处函数
- 提交 / PR:a8d757abe / !1722
- 详细修复内容:修复函数错误标注 noexcept 导致异常无法正常传播、最终触发 abort 的问题。
60. 多输入框场景崩溃
- 修改日期:2025-10-27
- 版本:0.72.101
- 问题描述:多输入框并存场景下,RCTMultilineTextInputView 的组件名称匹配逻辑缺失,导致视图创建路径异常崩溃
- 影响模块:TextInput
- 提交 / PR:d306178f5 / !1740
- 详细修复内容:针对多输入框并存场景下的崩溃问题进行修复,重点收敛 TextInput 相关对象访问和状态同步的异常路径。
61. 在 JS 线程上移除 NAPI reference 导致崩溃
- 修改日期:2025-11-11
- 版本:0.72.101
- 问题描述:NAPI reference 在错误线程上下文中被释放,JS 线程直接移除引用触发跨线程资源回收问题并导致崩溃
- 影响模块:NAPI / JS Thread
- 提交 / PR:7be372aa1 / !1801
- 详细修复内容:修复在错误线程上移除 NAPI reference 导致的崩溃,确保引用释放发生在正确线程上下文中。
62. 多个 Surface 并发访问 inflightAnimations_ 数据竞争导致崩溃
- 修改日期:2026-01-08
- 版本:0.72.112
- 问题描述:多 Surface 同时运行时,layout animations 的插值计算与 MountingCoordinator::pullTransaction() 并发访问 inflightAnimations_,导致 createInterpolatedShadowView 使用的 ShadowView 在竞争中失效并触发析构崩溃
- 影响模块:LayoutAnimation / Surface
- 提交 / PR:06dd58462 / !1983
- 详细修复内容:多 Surface 场景下,layout animations 与 pullTransaction 之间存在竞争条件,动画插值过程中引用的 ShadowView 可能被并发事务提前销毁,最终触发析构崩溃。修复通过增强并发保护,确保动画事务使用的 ShadowView 在整个处理阶段保持有效。
日志
#00 pc 00000000000f3334 /data/storage/el1/bundle/libs/arm64/librnoh_app.so(facebook::react::ShadowView::~ShadowView()+192)
#01 pc 0000000000046bf8 /data/storage/el1/bundle/libs/arm64/libreact_render_animations.so(facebook::react::LayoutAnimationKeyFrameManager::createInterpolatedShadowView(...)+1424)
#02 pc 0000000000031610 /data/storage/el1/bundle/libs/arm64/libreact_render_animations.so(facebook::react::LayoutAnimationDriver::animationMutationsForFrame(...)+460)
#03 pc 00000000000414d0 /data/storage/el1/bundle/libs/arm64/libreact_render_animations.so(facebook::react::LayoutAnimationKeyFrameManager::pullTransaction(...)+17764)
#04 pc 0000000000052ef8 /data/storage/el1/bundle/libs/arm64/libreact_render_mounting.so(facebook::react::MountingCoordinator::pullTransaction() const+1200)
#05 pc 0000000000061030 /data/storage/el1/bundle/libs/arm64/libreact_render_mounting.so
#06 pc 0000000000242788 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::SchedulerDelegate::schedulerDidFinishTransaction(...)+144)
#07 pc 0000000000041f44 /data/storage/el1/bundle/libs/arm64/libreact_render_scheduler.so(facebook::react::Scheduler::uiManagerDidFinishTransaction(...)+368)
#08 pc 0000000000047428 /data/storage/el1/bundle/libs/arm64/libreact_render_uimanager.so(facebook::react::UIManager::shadowTreeDidFinishTransaction(...)+100)
#09 pc 0000000000056ff4 /data/storage/el1/bundle/libs/arm64/libreact_render_mounting.so(facebook::react::ShadowTree::notifyDelegatesOfUpdates() const+84)
#10 pc 000000000005bd78 /data/storage/el1/bundle/libs/arm64/libreact_render_mounting.so(facebook::react::ShadowTreeRegistry::enumerate(...)+100)
#11 pc 0000000000047570 /data/storage/el1/bundle/libs/arm64/libreact_render_uimanager.so(facebook::react::UIManager::animationTick() const+88)
#12 pc 0000000000241a74 /data/storage/el1/bundle/libs/arm64/librnoh.so
#13 pc 000000000028253c /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::EventLoopTaskRunner::executeTask()+76)
#14 pc 00000000002816b8 /data/storage/el1/bundle/libs/arm64/librnoh.so(rnoh::NapiTaskRunner::executeTask()+112)
#15 pc 0000000000015a84 /system/lib64/platformsdk/libuv.so
63. AnimatedTM 销毁后 AnimatedNodesManager::runUpdates 仍被调用崩溃
- 修改日期:2026-01-08
- 版本:0.72.112
- 问题描述:AnimatedTurboModule 销毁后,VSync 或显示回调链路中的回调仍继续执行 runUpdates,访问已释放动画对象导致崩溃
- 影响模块:NativeAnimated
- 提交 / PR:396a14944 / !1955
- 详细修复内容:修复 AnimatedTM 已销毁后动画更新链路仍继续调用 runUpdates 的问题,避免销毁后对象继续参与回调。
日志
Error(11:1):undefined
at (/data/storage/el1/bundle/libs/arm64/librnoh_core_package.so:0)
at rnoh::AnimatedNodesManager::runUpdates(long long) (/data/storage/el1/bundle/libs/arm64/librnoh_core_package.so:328)
at rnoh::NativeAnimatedTurboModule::runUpdates(long long) (/data/storage/el1/bundle/libs/arm64/librnoh_core_package.so:84)
at OHOS::Rosen::RSDisplaySoloist::TriggerCallback() (/system/lib64/librender_service_client.z.so:312)
at OHOS::Rosen::RSDisplaySoloistManager::DispatchSoloistCallback(long) (/system/lib64/librender_service_client.z.so:176)
at OHOS::Rosen::VSyncCallBackListener::OnReadable(int) (/system/lib64/libvsync.z.so:788)
at OHOS::AppExecFwk::EventRunnerImpl::ExecuteEventHandler(...) (/system/lib64/chipset-sdk-sp/libeventhandler.z.so:1792)
at OHOS::AppExecFwk::EventRunnerImpl::Run() (/system/lib64/chipset-sdk-sp/libeventhandler.z.so:648)
at start (/system/lib/ld-musl-aarch64.so.1:240)
64. API12 上 librnoh_app.so 加载 libability_runtime.so 失败导致崩溃
- 修改日期:2026-02-11
- 版本:0.72.119
- 问题描述:API12 环境下,librnoh_app.so 所依赖的 libability_runtime.so 在目标命名空间不可见,原生模块首次加载即失败,最终触发启动崩溃
- 影响模块:SO 加载 / NAPI
- 提交 / PR:9a7f8865a / !2229
- 详细修复内容:修复 API12 环境下 librnoh_app.so 依赖库加载失败的问题,重点处理 libability_runtime.so 在目标命名空间中的可见性和加载策略。
日志
02-11 09:51:25.617 55271 55271 E C03F00/MUSL-LDSO: [invalidDomain] Error loading header libability_runtime.so, namespace ndk has no inherits, errno=2
02-11 09:51:25.617 55271 55271 E C03F00/MUSL-LDSO: [invalidDomain] Error loading header: can't find library libability_runtime.so in namespace: moduleNs_default
02-11 09:51:25.617 55271 55271 E C03F00/MUSL-LDSO: [invalidDomain] Error loading shared library libability_runtime.so: (needed by /data/storage/el1/bundle/libs/arm64/librnoh_app.so)
02-11 09:51:25.617 55271 55271 E C03F01/NAPI: [(native_module_manager.cpp:821)(LoadModuleLibrary)] First attempt: load app module failed. Error loading shared library libability_runtime.so: No such file or directory (needed by /data/storage/el1/bundle/libs/arm64/librnoh_app.so)
02-11 09:51:25.617 55271 55271 E C03F01/NAPI: [(native_module_manager.cpp:775)(LoadModuleLibrary)] First attempt: load app module failed. Error loading shared library libability_runtime.so: No such file or directory (needed by /data/storage/el1/bundle/libs/arm64/librnoh_app.so)
02-11 09:51:25.617 55271 55271 E C03F01/NAPI: [(native_module_manager.cpp:936)(FindNativeModuleByDisk)] First attempt: load app module failed. Error loading shared library libability_runtime.so: No such file or directory (needed by /data/storage/el1/bundle/libs/arm64/librnoh_app.so)
02-11 09:51:25.617 55271 55271 I C03F01/NAPI: [(ark_native_engine.cpp:503)(operator())] First attempt: load app module failed. Error loading shared library libability_runtime.so: No such file or directory (needed by /data/storage/el1/bundle/libs/arm64/librnoh_app.so)
02-11 09:51:25.617 55271 55271 E C03F00/ArkCompiler: [default] LoadNativeModule:435 export objects of native so is undefined, so name is entry
02-11 09:51:25.617 55271 55271 W C03F00/ArkCompiler: [default] InstantiateNativeModule:458 LoadNativeModule @normalized:Y&&&librnoh_app.so& failed