Repository navigation
[Bug] Android/Termux:会话写入失败 — flock is not supported on android-arm64 #6767
Closed
maxwell-feng
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
在 Android / Termux 上,任何需要写入 Session 的操作都会失败,报
flock is not supported on android-arm64。跨进程写租约依赖 POSIXflock(2),而提供它的原生插件只面向 linux(glibc、musl)与 darwin 发布和构建产物,Android 在加载入口被显式拒绝。0.1.6-alpha.1 与 0.1.5-rc.2 表现一致,该问题自d927cbff99(把租约实现从fs-ext换成自研预编译 addon)起存在。Reproduction
环境为 Android + Termux + Node v26.4.0(
process.platform === 'android',bionic libc):最小复现(无需启动 UI):
Current behavior
native/system/packages/entry/src/flock.ts:15的加载器只放行linux与darwin,Android 落到第 16-19 行的throw,错误码ERR_FLOCK_UNSUPPORTED_PLATFORM。native/system/packages/下只有linux-x64、linux-arm64、darwin-x64、darwin-arm64;native/system/scripts/build.ts:27有相同的双平台判断,因此 Termux 上pnpm run build不会产出system.node(实测find native -name '*.node'为空)。Android 使用 bionic,glibc/musl 的.node也无法直接加载。packages/session/session-persistence-jsonl/src/lease.ts:94只把锁竞争(EAGAIN/EWOULDBLOCK)映射为SessionAlreadyOwnedError(第 95-97 行),其它错误原样抛出,于是“平台不支持”直接中断写打开。只读路径不碰锁,读取历史会话不受影响。session.lock空文件(失败前open已创建该文件),而session.jsonl.zstd不再更新。实测最后一次成功写入早于该改动,之后只剩 lock 残留。Expected behavior
希望二选一:
packages/experimental/webworker-runtime/src/node/external_packages/node-addon-system-flock.ts直接Promise.resolve(),代价是放弃跨进程互斥;至少在文档中明确 Android/Termux 不受支持。Environment
process.platform === 'android'、process.arch === 'arm64'、无 glibc)0d1f50007f;同一现象在 0.1.5-rc.2(c291e7961a)一致补充:
flock.ts、build.ts、lease.ts在两个版本之间逐字节相同(git diff c291e7961a..master为空),因此这不是某次升级引入的回归,引入点是d927cbff99。替换前fs-ext实现在 Android 上是否可用未经验证,此处仅作背景记录。All reactions