已开启
BUGFIX: 修复 HarmonyOS 输入法 IPC 线程触发 WeakPtr SequenceChecker 崩溃 #5
BUGFIX: 修复 HarmonyOS 输入法 IPC 线程触发 WeakPtr SequenceChecker 崩溃 #5
已开启
Zhou创建于 8月11日
Zhou
Zhou
8月11日

问题背景

HarmonyOS 输入法通过 OS_IPC_* 线程回调 InsertTextV2() 和
DeleteBackwardV2() 时,直接判断 Chromium WeakPtr 是否有效。

该操作会在 IPC 线程访问绑定到 UI 序列的 WeakPtr,触发
SequenceChecker DCHECK,最终导致进程收到 SIGABRT 并崩溃。

根本原因

WeakPtr 的有效性检查需要遵守其绑定序列约束。原实现错误地在
HarmonyOS IPC 回调线程执行了完整有效性判断。

修改方案

  • IPC 线程使用线程安全的 MaybeValid() 进行预检查。
  • 将 WeakPtr 移交给 UI 线程任务。
  • 实际有效性检查和输入法操作仍在 UI 线程执行。
  • 避免在 IPC 线程跨序列访问 WeakPtr。

影响范围

仅修改:

ui/base/ime/ohos/input_method_ohos.cc

仅影响 HarmonyOS 输入法文本插入和退格删除流程,不影响其他平台。

验证结果

  • Debug 版本编译成功。
  • 新 HAP 已完成签名、安装和运行验证。
  • 长网址输入正常,无崩溃。
  • 连续退格 25 次正常。
  • 回车导航正常。
  • 完成 5 轮长网址输入,每轮连续退格 10 次。
  • 测试期间进程始终存活。
  • faultlogger 未发现新增崩溃记录。
likedislike
合并受阻