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

This commit is contained in:
Rongsong Shen 2026-08-22 08:24:41 +00:00
parent 81358b5231
commit c38207458f
No known key found for this signature in database
GPG key ID: 5BCDAAE0123E9FE2

View file

@ -18167,6 +18167,29 @@
],
"occurrences": 1,
"last_seen": "2026-08-21T15:56:00Z"
},
{
"id": "bug-1621",
"timestamp": "2026-08-22T08:12:00Z",
"error_message": "LeakSanitizer (run with ASAN_OPTIONS=detect_leaks=1, overriding this test suite's own detect_leaks=0 convention): 'Direct leak of 8 byte(s) ... #1 make_host_account ../lib/xcealloc.c:119 #2 make_job_account ../lib/xcealloc.c:188' -- an xce_host_account_t's `host` field (strdup'd in make_host_account(), src/lib/xcealloc.c:119) is never freed.",
"file": "src/lib/misc.c (free_host_account)",
"root_cause": "free_host_account() (src/lib/misc.c) frees acct->accounts[] (each via free_res_account()) and then FREEUP(acct) itself, but never FREEUP(acct->host) -- the strdup'd host string make_host_account() (src/lib/xcealloc.c:119, `haccount->host = strdup(halloc->host);`) allocates. Pre-existing, NOT introduced by scheduler-sim-decision-parity task 2.3: confirmed by tracing the leak's allocation stack, which bottoms out in make_job_account()/make_host_account() (xcealloc.c) -- the exact same tree-building code the LIVE dispatch path already uses (scheduler.c's sched_commit_decision() -> make_job_account()), so this leak equally exists on the live, production dispatch path today, just previously undetected because src/scheduler/testsuite/meson.build runs this whole suite with ASAN_OPTIONS=detect_leaks=0 (fixtures are deliberately not torn down in this test family, per test file header conventions -- masks this along with every other intentional fixture leak).",
"fix": "NOT FIXED -- out of boundary for task 2.3 (src/lib/misc.c was not in that task's editable file set; task 2.3's own boundary was sim_loop.c's Recorded-Decision Reconciliation component only). Discovered while verifying task 2.3's reconcile-then-release ASAN round-trip (test_reconcile_then_release_via_job_state_change_is_asan_clean, test_sim_reconcile_unaccounted.c) by re-running the standalone sched_sim_reconcile_unaccounted_test binary directly with ASAN_OPTIONS=detect_leaks=1 (overriding the meson-registered detect_leaks=0) specifically to check for leaks the registered test run cannot see. Zero double-free/use-after-free were found (task 2.3's own move-then-null-then-free ownership transfer is correct); this is the ONLY leak that traces through sim_reconcile_unaccounted_jobs, and it is entirely attributable to this pre-existing free_host_account() gap, not to task 2.3's own new code. Correct fix (for whoever picks this up): add `FREEUP(acct->host);` to free_host_account() in src/lib/misc.c, mirroring free_res_account()'s existing `FREEUP(acct->resname);` pattern immediately above it in the same file.",
"tags": [
"memory-leak",
"asan",
"leaksanitizer",
"free_host_account",
"xcealloc",
"scheduler",
"resource-accounting",
"scheduler-sim-decision-parity",
"pre-existing",
"out-of-scope"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-22T08:12:00Z"
}
]
}