fix(scheduler): REPL iterator leaks, affected jobids in round summaries, raw ids for trace on job

bug-1928: repl_count_jobs() and repl_info_jobs() never destroyed their
job-table iterators (16 B per continue round); both now do, and the
baseline and trace wiring tests run with leak detection on.
bug-1929: continue-mode round summaries listed only pending jobs, so a
dispatch-only round printed an empty jobids= and rounds dispatching
different jobs collapsed together; rounds now record and list every
affected job (scheduler-sim-repl-verbosity Req 2.1, 3.2). The baseline
transcript changes only in its two jobids= lines.
bug-1930: trace on job now accepts the raw decimal jobid form that info
trace and info job accept, through a shared parser.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-10-09 03:37:03 +00:00
parent 5ca59dc9a8
commit ba6f42cdc2
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
13 changed files with 455 additions and 67 deletions

View file

@ -2542,9 +2542,10 @@ sched_repl_trace_baseline_test = executable(
+ '"'],
install: false)
# Leak detection stays on: the child xce_scheduler inherits it, so a REPL
# leak makes the scripted session exit non-zero (bug-1928).
test('scheduler repl trace baseline test',
sched_repl_trace_baseline_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'],
depends: scheduler)
# scheduler-sim-decision-trace task 6.1 (Requirements 1-8; design.md
@ -2884,8 +2885,7 @@ test('scheduler repl trace emit test',
# `set output` rejecting an open trace file, quit/EOF shutdown, the
# traced-round rollup and the interactive-only gates. Includes repl.c (for
# its static help, dispatch and quit) and links every other scheduler
# source except main.c. Leak detection is off like the other rollup tests:
# repl_count_jobs() (repl.c) never destroys its iterator.
# source except main.c. Leak detection stays on.
sched_repl_trace_wiring_test_srcs = ['test_repl_trace_wiring.c']
foreach f : scheduler_srcs
if f != 'src/main.c' and f != 'src/repl.c'
@ -2904,8 +2904,7 @@ sched_repl_trace_wiring_test = executable(
install: false)
test('scheduler repl trace wiring test',
sched_repl_trace_wiring_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])
sched_repl_trace_wiring_test, suite: 'scheduler')
# scheduler-sim-decision-trace task 5.3 (Requirements 1.6, 2.5, 7.1-7.3,
# 7.5, 10.1, 11.3): the trace wired into the simulation driver's session and