fix(m53): r1 评审 P2 — 小数后缀时长、文档数字、信号失败告警
P2-1 时长解析:后缀乘数只作用在整数部分,nsec 没跟着乘。 0.05m 被算成 50ms(应 3s)、1.5m 算成 60.5s(应 90s)、0.5h 算成 0.5s。 修法:sec 与 nsec 都乘 mult(各自带溢出检查,mult==1 行为不变)。 --help 与头注释的示例改为逐个标出等价值(2.5s=2.5s、1.5m=90s、0.5h=1800s), 不再留文档写着、实际算错的例子。 新增 T11:宿主上编译 parser 单测(27 例,含 0.01m/0.05m/1.5m/0.5h)真跑, 并单独点名评审抓到的三条,防止回归。 P2-2 文档数字:§2 产物表 47 708 → 49 676,合计 2 189 472 → 2 191 440; 全表按 MANIFEST 重核(其余七项未漂移),§11.1 补上新的体积/md5/sha256。 P2-3 信号失败不静默:新增 kill_child()(kill(-pgid) 失败时 ESRCH 视为组已消失, 退化为 kill(pid),EPERM 等明确告警)、verify_process_group()(发信号前用 getpgid 核对建组是否生效)、父进程 setpgid 的异常 errno 告警;连兜底 kill 都失败时退出码 125 而不是谎报 124。新增 -DTIMEOUT_TEST_SETPGID_FAIL 故障注入 与 T12(a-d)验证告警路径可达且兜底真的杀掉子进程。 真机复验(md5 aded39e0,49 676 B):124/137/0/孙进程清零/保证挂住的命令 3.01s 被 124 结束/0.01m=0.61s、0.05m=3.01s、2.5s=2.51s/无参 125;收工 bt=0 sleep=0, Music 199164544。回归 44 通过 0 失败。
This commit is contained in:
1 parent
24f1d8a682
commit
c93814a78b
4 files changed
+314
-27
No files matched your search
@@ -560,10 +560,13 @@ timeout 用法(本仓 Apache-2.0 独立实现,非 busybox 代码):
|
||||
timeout -s KILL 2 sleep 30 # 退出码 137
|
||||
timeout -k 1 5 bluetoothctl connect XX:XX... # TERM 后 1 秒仍在 → KILL
|
||||
timeout 0.2 sleep 5 # 支持小数秒(约 200ms 返回)
|
||||
timeout 0.5m sleep 60 # 小数+后缀叠加:0.5m = 30 秒(1.5m = 90 秒)
|
||||
超时信号发给 COMMAND 的**整个进程组**:命令自己 fork 的孙进程一起死
|
||||
(`timeout 5 sh -c 'a & b & wait'` 不会留下 a/b)。退出码:
|
||||
124=超时 137=超时且最终发了 KILL 128+N=命令死于信号 N
|
||||
125=timeout 自身参数/系统调用错 126=命令无法执行 127=命令不存在
|
||||
杀不动时不装作成功:进程组不可用会告警并退化为只杀直接子进程;
|
||||
连兜底 kill 都失败时退出码 125(不是 124),不会谎报"已处理"。
|
||||
不支持 --preserve-status / -v / d(天)后缀,给了会明确报 125(不静默忽略)。
|
||||
不跟踪 setsid() 逃出进程组的守护进程(coreutils 也不跟踪)。
|
||||
精度是毫秒级够用:计时交给内核 setitimer(ITIMER_REAL)+SIGALRM,不读时钟,
|
||||
|
||||
Reference in new issue
Block a user