From 9e1516122839b166e98ad34cfa42473d672166e9 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Thu, 13 Aug 2026 08:10:28 +0000 Subject: [PATCH] chore(wolf): checkpoint buglog.json (880 bugs) --- .wolf/buglog.json | 154 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git a/.wolf/buglog.json b/.wolf/buglog.json index 27ee9eb3..32361851 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -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" } ] }