From 64fb19183a70538d081155a5db16f28c7cd93db9 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Tue, 25 Aug 2026 04:43:10 +0000 Subject: [PATCH] chore(wolf): checkpoint buglog.json (1023 bugs) --- .wolf/buglog.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.wolf/buglog.json b/.wolf/buglog.json index 256622d0..3d113507 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -18652,6 +18652,27 @@ ], "occurrences": 1, "last_seen": "2026-08-24T21:30:00Z" + }, + { + "id": "bug-1682", + "timestamp": "2026-08-24T21:40:00Z", + "error_message": "Found while fixing bug-1681 (source read of plugin_end_session(), src/scheduler/src/plugin.c): the per-plugin iteration guard checks the WRONG field. plugin_end_session()'s loop tests `if (plugin->begin_session_fn != NULL) { plugin->end_session_fn(plugin); }` -- guards on begin_session_fn but calls end_session_fn. Pre-existing, not introduced by bug-1681's fix (untouched by that diff). Previously documented (not fixed) in testsuite/test_driver_session_ordering.c's own file header comment as a known 'CONCERN surfaced during this test's construction' -- flagged there for the reviewer, deliberately left unfixed as out of that task's scope. Confirmed still present in current code.", + "file": "src/scheduler/src/plugin.c", + "root_cause": "Copy-paste from plugin_begin_session()'s loop body (which correctly guards on begin_session_fn before calling it) without updating the guard field for the end_session variant.", + "fix": "Not yet fixed -- deliberately left alone during bug-1681 (scope: driver-equivalence call-site parity only, not adjacent defects in the function bodies touched). Impact: a plugin registering ONLY end_session_fn (no begin_session_fn) would silently never have its end_session_fn invoked; a plugin registering ONLY begin_session_fn (no end_session_fn) would crash via a NULL function-pointer call the first time a round ends. Currently inert in production -- the only plugin that sets either field (legacy `fcfs`, end_session_fn only, plugins/fcfs.c:352) is unreachable in sim mode, and in normal mode `fcfs` is not the registered default (builtin_fcfs is, and it leaves both fields NULL) -- but `fcfs` IS still registered alongside builtin_fcfs (scheduler.c:466-473) and reachable if `job_pick_plugin` is ever configured to it, or if a future plugin registers begin_session_fn without end_session_fn. Fix: change the guard to check the field actually being called (`plugin->end_session_fn != NULL`).", + "tags": [ + "scheduler", + "plugin", + "session-hooks", + "guard-bug", + "latent", + "scheduler-driver-equivalence" + ], + "related_bugs": [ + "bug-1681" + ], + "occurrences": 1, + "last_seen": "2026-08-24T21:40:00Z" } ] }