fix(scheduler): free jobs, schedobjs, sim decisions and the fcfs plugin at teardown (bug-1884, part 4)
- kill_sched_job() (the job table's datakiller) frees the whole job: schedobj, parsed resreq, allocation, accounts and rusages; new kill_sched_obj() frees the schedobj's names, limit lists, per-primary wrappers and their pend reasons, and its last allocation/reason. - The simulator frees each decision struct after draining it (live and reconciled); the alloc/pend reason it points at stays the job's. - The builtin_fcfs heap plugin gets a fini_fn that also frees the plugin; builtin_fcfs_fini() still frees only the picker state (tests run it on stack plugins). - xce_sched_core_fini() frees the two pend_updates queues both drivers calloc(). Exit-time leak on the reproduction replay 11,426 -> 7,469 bytes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8134b75b10
commit
ebfe4794f0
5 changed files with 91 additions and 3 deletions
|
|
@ -221,6 +221,7 @@ extern int sched_ctx_get_uncomit_shared(xvec_t**, xce_sched_ctx_t*);
|
|||
extern int sched_ctx_get_uncomit_host(xvec_t**, xce_sched_ctx_t*, int);
|
||||
extern int sched_ctx_uncommit_host(xce_sched_ctx_t*, int, xvec_idval_t*);
|
||||
extern void reset_sched_obj(xce_sched_obj_t*);
|
||||
extern void kill_sched_obj(xce_sched_obj_t*);
|
||||
/* item killer for xce_sched_obj_t.hlimits: frees one per-worker xlist_t
|
||||
* (never its vres entries, which the limit plugin's instance table owns). */
|
||||
extern void kill_hlimits_list(void*);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue