Commit 0caf286a1a

Andrew Kelley <andrew@ziglang.org>
2025-10-27 22:08:51
std.Io.Threaded: don't skip executing canceled group closures
1 parent df4c30c
Changed files (1)
lib
lib/std/Io/Threaded.zig
@@ -566,10 +566,8 @@ const GroupClosure = struct {
         const reset_event: *ResetEvent = @ptrCast(&group.context);
         if (@cmpxchgStrong(CancelId, &closure.cancel_tid, .none, tid, .acq_rel, .acquire)) |cancel_tid| {
             assert(cancel_tid == .canceling);
-            // We already know the task is canceled before running the callback. Since all closures
-            // in a Group have void return type, we can return early.
-            syncFinish(group_state, reset_event);
-            return;
+            // Even though we already know the task is canceled, we must still
+            // run the closure in case there are side effects.
         }
         current_closure = closure;
         gc.func(group, gc.contextPointer());