chore(buglog): log bug-1490 fix, libxce capnp codegen race, apiserver restart transient segv

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
lei.chen 2026-08-07 08:52:17 +00:00
parent 3db216c628
commit a9e6446b1e

View file

@ -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"
}
]