chore(wolf): checkpoint buglog.json (880 bugs)

This commit is contained in:
Rongsong Shen 2026-08-13 08:10:28 +00:00
parent ff87986950
commit 9e15161228
Signed by: rshen
SSH key fingerprint: SHA256:8Vf2pZ3h6rJa7EhGK+WaAQ9Mta/apZvteW6g9U/WKKk

View file

@ -15643,6 +15643,160 @@
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T03:02:32.434Z"
},
{
"id": "bug-872",
"timestamp": "2026-08-13T07:20:20.800Z",
"error_message": "Significant refactor of ",
"file": "src/xceadmin/src/xcecommon/mapping.py",
"root_cause": "7 lines replaced/restructured",
"fix": "Rewrote 8\u219214 lines (7 removed)",
"tags": [
"auto-detected",
"refactor",
"py"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:20:20.800Z"
},
{
"id": "bug-873",
"timestamp": "2026-08-13T07:20:42.831Z",
"error_message": "Significant refactor of ",
"file": "src/xceadmin/tests/test_mapping.py",
"root_cause": "3 lines replaced/restructured",
"fix": "Rewrote 3\u21925 lines (3 removed)",
"tags": [
"auto-detected",
"refactor",
"py"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:20:42.831Z"
},
{
"id": "bug-874",
"timestamp": "2026-08-13T07:25:51.662Z",
"error_message": "Missing error handling in unknown",
"file": "src/controller/testsuite/test_worker_join.c",
"root_cause": "Code path had no error handling \u2014 exceptions would propagate uncaught",
"fix": "Added try/catch block",
"tags": [
"auto-detected",
"error-handling",
"c"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:25:51.662Z"
},
{
"id": "bug-875",
"timestamp": "2026-08-13T07:27:23.041Z",
"error_message": "Significant refactor of ",
"file": "src/controller/worker.c",
"root_cause": "3 lines replaced/restructured",
"fix": "Rewrote 49\u219267 lines (3 removed)",
"tags": [
"auto-detected",
"refactor",
"c"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:27:23.041Z"
},
{
"id": "bug-1553",
"timestamp": "2026-08-13T07:35:00Z",
"error_message": "controller_unit_test (combined 1095-test Unity binary) segfaults intermittently (~1 in 3 full runs observed) somewhere between test_drive_async_config.c and the next testsuite file (test_configcompare.c/test_slowlane.c area) -- no assertion failure, no ASAN report captured before the crash, process just dies (exit 139/SIGSEGV)",
"file": "src/controller/testsuite/ (combined binary, crash site not yet isolated -- occurs after test_drive_async_config.c's liveness_reserved_* tests)",
"root_cause": "Not yet investigated. Reproduced 1/3 runs both BEFORE and AFTER an unrelated worker.c change (update_resval PERROR->rc logging fix) confirming this is pre-existing and unrelated to that fix -- likely order-dependent shared-process state leakage across Unity tests (global fixtures, xstring table, or ASAN heap state) rather than a bug in any specific test file. Two of three runs completed cleanly with 0 failures each time.",
"fix": "Not fixed -- out of scope for the update_resval/mxj-auto-detect bugfix session that surfaced it. Needs isolation: bisect which specific test pair triggers it (likely by running testsuite files in smaller batches or under gdb with a core dump), then root-cause the actual memory-safety issue.",
"tags": [
"flaky",
"segfault",
"controller_unit_test",
"order-dependent",
"unity",
"not-fixed"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:35:00Z"
},
{
"id": "bug-1554",
"timestamp": "2026-08-13T07:36:00Z",
"error_message": "workerlist / resval show maxswap=1024 and maxtmp=2048 for every host regardless of actual hardware, unless overridden by a per-host config resource entry",
"file": "src/worker/src/xcecd.c",
"root_cause": "init_host_attrs() hardcodes host_attrs.maxswap = 1024 and host_attrs.maxtmp = 2048 as placeholder constants (lines ~349-350) -- unlike maxcpus/maxmem, which come from real hardware_monitor_* detection, these two fields have no real detection implemented yet. Confirmed live: a deploy's maxtmp showed exactly 2048 (the hardcoded stub) while maxswap showed 10000 (a per-host config override in hosts.yaml resource list, taking precedence via apply_join_state's mark_host_res loop -- proves the stub IS reachable/live whenever no override exists).",
"fix": "Not fixed -- user explicitly deferred this (2026-08-13): real swap/tmp-disk detection is a bigger feature (needs actual sysinfo swap totals + statvfs on the configured tmp path) worth discussing design for, not a one-line fix. Flagging only per user's request.",
"tags": [
"worker",
"hardware-detection",
"stub",
"not-fixed",
"maxswap",
"maxtmp"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:36:00Z"
},
{
"id": "bug-878",
"timestamp": "2026-08-13T08:06:37.286Z",
"error_message": "Significant refactor of ",
"file": "src/controller/testsuite/test.c",
"root_cause": "2 lines replaced/restructured",
"fix": "Rewrote 30\u219241 lines (2 removed)",
"tags": [
"auto-detected",
"refactor",
"c"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T08:06:37.286Z"
},
{
"id": "bug-1555",
"timestamp": "2026-08-13T07:40:00Z",
"error_message": "controller log spammed with '[ERROR] update_resval: Success' / 'update_resval: Resource temporarily unavailable' -- misleading, the real failure reason is never logged",
"file": "src/controller/worker.c",
"root_cause": "update_resvals()/update_resval_list() called PERROR(\"update_resval\") on rc<0, but PERROR (xce_perror -> xce_perror_) formats the process-global errno, not rc. update_resval()'s failure paths (key_find/zarray_put) return raw negative codes directly and never touch errno, so the logged message reflected whatever errno happened to be left over from an unrelated earlier syscall in the same event-loop iteration -- 0 (\"Success\") if nothing had touched it, or a stray EAGAIN if something had. The real reason (e.g. -ENOENT from an unregistered resource name) was silently discarded. Also fixed a second instance of the same errno-vs-rc bug in update_resval()'s r==NULL branch (was `return -errno;`, now `return -ENOENT;`, matching the identical branch in the sibling function mark_host_res()).",
"fix": "Replaced PERROR with a local log_update_resval_failure() helper that decodes the actual rc via xce_strerror_r(-rc, ...) and includes the resource name in the message. Regression test: test_update_resvals_logs_actual_rc_not_stale_errno (test_worker_join.c) sets errno=EAGAIN before the call and asserts the captured log contains neither \"Success\" nor \"Resource temporarily unavailable\", contains the resource name, and contains the real ENOENT string -- verified genuine RED (failed against the reverted old code with the exact reported symptom) before GREEN.",
"tags": [
"controller",
"logging",
"errno",
"fixed"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:40:00Z"
},
{
"id": "bug-1556",
"timestamp": "2026-08-13T07:41:00Z",
"error_message": "Every host using the documented hosts.yaml default (no max_slot, meaning 'auto-detect from CPU count') gets 0 scheduling slots -- permanently blocks the scheduler from placing any job on that host",
"file": "src/xceadmin/src/xcecommon/mapping.py",
"root_cause": "hosts.schema.json documents max_slot: -1 as the 'auto-detect' sentinel, but HostConfig.mxj is UInt32 on the wire and cannot represent -1 (pycapnp raises capnp.KjException for a negative assignment). mapping.py's _build_host_config() worked around this by leaving mxj unset when max_slot was absent/negative, which capnp defaults to 0. worker.c's apply_join_state() then does `nslots = hconfig->mxj; if (nslots < 0) nslots = maxcpus;` -- but 0 is never < 0, so the auto-detect fallback never fires, and the host is explicitly configured with 0 slots. Confirmed live via a real deploy: resval -n slots showed value: 0.000000 for the default host. An existing test (test_mapping.py) even asserted this broken behavior as correct (`assert h.mxj == 0`).",
"fix": "mapping.py now sets mxj = HOSTCONFIG_MXJ_AUTO_DETECT (0xFFFFFFFF) instead of leaving it unset. The controller's `int mxj` field receives this via capn_read32()'s implicit uint32_t->int conversion, which reinterprets it back to -1 on this project's two's-complement target platforms -- no capnp schema change or C-side change needed, apply_join_state()'s existing `nslots<0` fallback already handles a genuine -1 correctly (now proven by a new C regression test, test_apply_join_state_mxj_negative_one_falls_back_to_maxcpus, since no existing test exercised that branch with a negative mxj before). Updated the stale test assertion, added a new test for the absent-max_slot production case, and regenerated the xceadmin golden fixture (tests/fixtures/full/expected.bin) whose wire bytes changed as a result.",
"tags": [
"xceadmin",
"config",
"scheduling",
"wire-encoding",
"fixed",
"high-severity"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-13T07:41:00Z"
}
]
}