From a9e6446b1e8f90ec1c1eb494f894592ef6626bec Mon Sep 17 00:00:00 2001 From: "lei.chen" Date: Fri, 7 Aug 2026 08:52:17 +0000 Subject: [PATCH] chore(buglog): log bug-1490 fix, libxce capnp codegen race, apiserver restart transient segv Co-Authored-By: Claude --- .wolf/buglog.json | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.wolf/buglog.json b/.wolf/buglog.json index b0e1989..32809b3 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -14894,5 +14894,41 @@ "related_bugs": [], "occurrences": 1, "last_seen": "2026-08-05" + }, + { + "id": "bug-1490", + "timestamp": "2026-08-07", + "error_message": "job control (hold/release/cancel) 返回 HTTP 500, 请求到不了 controller", + "file": "src/frontend/apiserver/controllers/jobs.go, backend/clib.go, backend/convert_pure.go", + "root_cause": "两个叠加缺陷: (1) validateJobControl/foundJob 用 jobinfo.Data[\"array_idx\"].(int64), 但 StoreToOrderMaps 产出 array_idx 为 int (models.JobInfo.ArrayIdx 声明为 int) -> panic -> Gin Recovery -> HTTP 500; (2) backend.ControlJob 把 xce_jobctrl_t.action 设成 models.JOB_* 常量 (1/2/3/8), 但该字段是 capnp JobControl union 判别符 (JobControl_u_siginfo=0 / JobControl_u_ckptoption=1), controller job_ctrl() 走错 union 分支 (或 default) -> 每个动作 -EINVAL", + "fix": "jobs.go 加 normalizeJobInt64/jobArrayIdx 替换全部 array_idx.(int64) 断言; clib.go 加 jobCtrlDiscriminant() 把 JOB_* 映射为 union 判别符。另顺带修复: resolveExecUser 被放在 cgo-only convert.go 导致 make test (CGO_ENABLED=0) backend 包编译失败, 移到 convert_pure.go。集群 E2E: hold->PSUSP, release->PEND, cancel->EXIT, 无 500 无 -EINVAL, daemon 全健康。commit c90e63e", + "tags": ["apiserver", "job-control", "panic", "capnp", "union-discriminant", "EINVAL", "fixed"], + "related_bugs": [], + "occurrences": 1, + "last_seen": "2026-08-07" + }, + { + "id": "build-race-capnp-codegen", + "timestamp": "2026-08-07", + "error_message": "xce-build apiserver 干净构建偶发失败: lib/libxce.a.p/hook.c.o 与 htab.c.o 编译报 fatal error: controller.capnp.h: No such file or directory", + "file": "src/lib/meson.build", + "root_cause": "build.ninja 里 capnp codegen 边 (生成 lib/controller.capnp.h) 未声明为 hook.c/htab.c 编译边的依赖, 且首次编译时 DEPFILE 不存在; utils.h include controller.capnp.h, ninja 可能把 codegen 排到这两个 compile 之后 (竞态)。同一命令重跑即成功。", + "fix": "未修 (超 bug-1490 scope)。应在 src/lib/meson.build 为 include utils.h 的源声明对生成 controller.capnp.h 的依赖。", + "tags": ["build", "ninja", "capnp", "codegen", "race"], + "related_bugs": [], + "occurrences": 1, + "last_seen": "2026-08-07" + }, + { + "id": "apiserver-restart-transient-segv", + "timestamp": "2026-08-07", + "error_message": "部署新 apiserver 二进制后首次重启启动失败: Go runtime GC (clearpools) 内 SIGSEGV; 重试即正常启动且稳定", + "file": "apiserver 启动路径 (Go+ASAN 静态链接 libxce.a)", + "root_cause": "未定位 (transient)。可能与被 kill 的旧 apiserver 进程 teardown 竞争, 或 ASAN Go 二进制启动竞态。仅首次出现一次, 重试成功, 后续 E2E 全程稳定。", + "fix": "无 (观察记录)。下次出现需: 确保旧进程完全退出再启动, 若复现则抓 core 分析。", + "tags": ["apiserver", "asan", "segfault", "transient", "unconfirmed"], + "related_bugs": [], + "occurrences": 1, + "last_seen": "2026-08-07" } ] \ No newline at end of file