Files
ElyOffice/tasks/reviews/C06.3-r5.md
T

8 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 目标编译检查。