chore(wolf): checkpoint buglog.json (1002 bugs)
This commit is contained in:
parent
81358b5231
commit
c38207458f
1 changed files with 23 additions and 0 deletions
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue