Repository navigation
修 Paper Pro(ferrari)装完 xochitl 崩溃回退的问题。Paper Pro 用户请升级,Paper Pro Move 不受影响。
问题
v1.2.1 装到 Paper Pro 上,六个阶段全部通过,但 xochitl 起来就崩,反复几次后安装器按设计回退到出厂启动(设备没有损坏)。日志里是:
xochitl.service: Main process exited, code=dumped, status=4/ILL
status=4/ILL 是 SIGILL(非法指令)。
原因
两款 aarch64 设备的 CPU 不一样:
| 机型 | CPU | 指令集 |
|---|---|---|
| Paper Pro Move | Cortex-A55 | ARMv8.2,支持 LSE 原子指令 |
| Paper Pro | Cortex-A53 | ARMv8.0,不支持 LSE |
v1.2.1 发布包里两个产物是按 A55 基线编的,里面有没做运行时回退的 LSE 指令:
qml_inject_impl-aarch64.so146 条 → xochitl 加载它时 SIGILL,crash loopime-server-rime-aarch643377 条 → 整句输入法崩(被 crash loop 盖住,一直没被注意到)
源码里的基线修复 10-04 就做了,编译脚本也有自检。但预编译二进制不进 git 仓库,打包时用的是修复之前编的产物 —— 源码的修复和发布的包脱节了。
本版改动
- 用重新编译的产物(
-mcpu=cortex-a53+crypto,libstdc++ 动态链接),A53/A55 两台通用 - 新增发布体检
scripts/lse_scan.py:扫二进制里有没有「裸露」的 LSE 指令。判据是看指令上下文有没有 CPU 能力判断,而不是看符号名 —— strip 过的二进制符号归属不可信,按符号判会把 GCC 的 outline atomics helper 误报成问题,也会漏掉 Go runtime 里的 scripts/check-dist.sh发布前本机跑,.github/workflows/release-check.yml在 release 发布后自动复查dist.tar.gz和rmkit-cn-bundle.zip两个包(#7 的报告者走的是助手那条路,只验前者会漏)
升级
用桌面助手的:下载本页的 rmkit-assistant-* 和 rmkit-cn-bundle.zip,重新安装一次。
用 install.sh 的:它会自动从本 release 拉 dist.tar.gz。