1.8 KiB
FAIL
crates/ely-files/src/key.rs:114 — [P1] 空锁文件以及读取、解析失败均被当作持有者死亡,随后删除锁;创建锁到写入 PID 之间仍存在丢失排他保护的窗口。隔离副本仅插入调度屏障复现:A 创建锁后暂停,B 读取空锁并接管、暂停在凭据写入前;A 恢复并成功生成密钥及恢复点,B 随后覆盖凭据并成功返回另一密钥。最终持久密钥恢复 A 的副本时报 InvalidData。现有 85 项测试全部通过,该受控交错回归失败。修复方向:使用随持有者退出释放的系统排他锁,传播锁操作错误,并覆盖尚未写入 PID 时的并发初始化与最终密钥解密回归。
crates/ely-files/src/key.rs:73 — [P1] 取得锁后的错误通过 ? 提前返回,锁文件只在成功路径清理;新存活检测随后把已结束的初始化视为仍在运行。隔离实测:后端首次写入返回 PermissionDenied,模拟取消系统凭据解锁;后端恢复可用后,同一进程再次调用仍返回 TimedOut,锁文件保留,后续尝试持续失败。加密文档的恢复初始化因此要等持有进程退出才能恢复。修复方向:用作用域锁守卫覆盖所有成功与错误出口,补暂时读取或写入失败后原进程重试成功的回归。
crates/ely-files/src/key.rs:136 — [P1] #[cfg(unix)] 分支使用 macOS 的 libc::__error(),Linux 的 libc 接口没有该函数,导致 Linux 编译失败。将该函数原样提取,使用项目锁定的 libc 0.2.189 和 Rust 1.96.0 对 x86_64-unknown-linux-gnu 编译,实际报 E0425: cannot find function __error in crate libc;整 crate 的 Linux 检查另受本机缺少 libdbus 交叉编译环境阻挡。修复方向:使用标准库读取系统错误,或按操作系统选择 errno 接口,并加入 Linux 目标编译检查。