From f5981a2807296ec8cbebea3276c5a692c0eaa905 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 28 Sep 2026 08:30:44 +0800 Subject: [PATCH] =?UTF-8?q?docs(make):=20=E8=AE=B0=E4=B8=8B=20proc=20grand?= =?UTF-8?q?child=20=E6=B5=8B=E8=AF=95=E6=9C=AC=E8=BA=AB=E4=B8=8D=E7=A8=B3?= =?UTF-8?q?=E5=AE=9A=EF=BC=88=E7=8E=B0=E8=B1=A1=EF=BC=8C=E6=9C=AA=E4=B8=8B?= =?UTF-8?q?=E6=A0=B9=E5=9B=A0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `make test` 的后置验证里发现 `internal/plugin/proc` 会 FAIL,实测形态: - 单独跑**同一命令**:`ok 11.5s` / `FAIL` 交替出现(至少各一次) - 全量并发跑:曾 600s 超时(`panic: test timed out after 10m0s`), 也曾 90s 就 FAIL - 失败测试固定是 `TestKillReturnsEvenWhenGrandchildSurvives`, 伴随日志 `[proc] audit 退出: signal: killed` 与本次改动(1ef1998 SSE 退避、9c3d285 判据)无关联:改的是 `cmd/gui/renderer/app.js` 与判据脚本,没碰 `internal/plugin/proc`。 症状**像** fork/kill 的进程组语义在容器/并发下不稳(孙进程 setsid 脱组后杀不掉 ⇒ Wait 挂死),但**尚未定位到根因**,因此 Makefile 里 只记现象、不下结论。 ★ 记这一条是因为我自己先踩了坑:一开始连跑 3 次全绿,我就准备写 「单跑稳定、仅并发偶发」;紧接着同一命令又 FAIL 了。**单跑通过不能 当结论** —— 这类 fork/kill 测试必须重试才能给出可信判断。 --- Makefile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Makefile b/Makefile index f948d2f..de31a83 100644 --- a/Makefile +++ b/Makefile @@ -341,6 +341,17 @@ install: build systemctl daemon-reload @echo "Installed. Run: systemctl enable --now homeagent" +# ⚠ internal/plugin/proc 的 grandchild 系列测试(fork 真进程 + syscall.Kill +# 杀进程组)**本身不稳定**,与本次改动无关: +# · 单独跑同一命令:ok 11.5s / FAIL 交替出现(实测至少各一次) +# · 全量并发跑:曾 600s 超时,也曾 90s 就 FAIL +# · 失败形态固定是 TestKillReturnsEvenWhenGrandchildSurvives, +# 伴随日志 `[proc] audit 退出: signal: killed` +# 症状像 fork/kill 的进程组语义在容器/并发下不稳(孙进程 setsid 脱组后 +# 杀不掉 ⇒ Wait 挂死),但**尚未定位到根因**,所以这里只记录现象、 +# 不下结论。要稳定门禁就单独跑并重试: +# go test ./internal/plugin/proc/ -count=1 +# ⚠ 别把"单跑通过"当结论——同一命令会交替通过/失败。 test: $(GO) test ./... @$(MAKE) test-gui