commit 332d632ccceb65d2b28cceee740d794d6d7c4c2a (tree)
parent 122e0c26f23e765d91f0ff15533aeac2f4bc8f65
Author: Kendall Condon <goon.pri.low@gmail.com>
Date: Wed, 22 Apr 2026 20:53:33 -0400
collect all stderr on fuzzing crash
Diffstat:
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/lib/std/Build/Step/Run.zig b/lib/std/Build/Step/Run.zig
@@ -2166,11 +2166,15 @@ const FuzzTestRunner = struct {
const result = completion.result;
switch (completion.index % 3) {
0 => try f.completeStdinWrite(id, result.file_write_streaming catch |e| switch (e) {
- error.BrokenPipe => return f.instanceEos(id),
+ // Avoid calling `instanceEos` until EndOfStream is seen with stderr so
+ // that all stderr is collected.
+ error.BrokenPipe => continue,
else => |write_e| return write_e,
}),
1 => try f.completeStdoutRead(id, result.file_read_streaming catch |e| switch (e) {
- error.EndOfStream => return f.instanceEos(id),
+ // Avoid calling `instanceEos` until EndOfStream is seen with stderr so
+ // that all stderr is collected.
+ error.EndOfStream => continue,
else => |read_e| return read_e,
}),
2 => try f.completeStderrRead(id, result.file_read_streaming catch |e| switch (e) {
@@ -2480,7 +2484,7 @@ const FuzzTestRunner = struct {
const step_owner = f.run.step.owner;
const arena = step_owner.allocator;
- // Collect any remaining stderr
+ // Collect any available stderr
while (f.batch.next()) |completion| {
if (completion.index % 3 != 2) continue;
const len = completion.result.file_read_streaming catch continue;