From e5e722ea8384d44c910bce102d52561d9e8778b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Sibiril?= <81782+aureliensibiril@users.noreply.github.com> Date: Sun, 26 Apr 2026 23:21:50 +0200 Subject: [PATCH] Skip parallel suspension when checkpoint is nil MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The triggering entry in the parallel-suspend path stored se.Checkpoint into innerCheckpoints unconditionally, while the sibling loop already guarded otherSE.Checkpoint != nil. A nil entry would later cause restoreNestedSuspended to dereference innerCP.AgentName and panic. Apply the same guard so a malformed SuspendedError falls through to the regular result-collection path instead of poisoning the checkpoint map. Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com> --- pkg/agent/run.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/agent/run.go b/pkg/agent/run.go index 21f2533dd..4e673b915 100644 --- a/pkg/agent/run.go +++ b/pkg/agent/run.go @@ -976,7 +976,7 @@ func executeParallel( continue } se, ok := errors.AsType[*SuspendedError](entry.err) - if ok { + if ok && se.Checkpoint != nil { innerCheckpoints := make(map[string]*Checkpoint) var completed []CompletedCall