| ... | @@ -2166,11 +2166,15 @@ const FuzzTestRunner = struct { | ... | @@ -2166,11 +2166,15 @@ const FuzzTestRunner = struct { |
| 2166 | const result = completion.result; | 2166 | const result = completion.result; |
| 2167 | switch (completion.index % 3) { | 2167 | switch (completion.index % 3) { |
| 2168 | 0 => try f.completeStdinWrite(id, result.file_write_streaming catch |e| switch (e) { | 2168 | 0 => try f.completeStdinWrite(id, result.file_write_streaming catch |e| switch (e) { |
| 2169 | error.BrokenPipe => return f.instanceEos(id), | 2169 | // Avoid calling `instanceEos` until EndOfStream is seen with stderr so |
| | 2170 | // that all stderr is collected. |
| | 2171 | error.BrokenPipe => continue, |
| 2170 | else => |write_e| return write_e, | 2172 | else => |write_e| return write_e, |
| 2171 | }), | 2173 | }), |
| 2172 | 1 => try f.completeStdoutRead(id, result.file_read_streaming catch |e| switch (e) { | 2174 | 1 => try f.completeStdoutRead(id, result.file_read_streaming catch |e| switch (e) { |
| 2173 | error.EndOfStream => return f.instanceEos(id), | 2175 | // Avoid calling `instanceEos` until EndOfStream is seen with stderr so |
| | 2176 | // that all stderr is collected. |
| | 2177 | error.EndOfStream => continue, |
| 2174 | else => |read_e| return read_e, | 2178 | else => |read_e| return read_e, |
| 2175 | }), | 2179 | }), |
| 2176 | 2 => try f.completeStderrRead(id, result.file_read_streaming catch |e| switch (e) { | 2180 | 2 => try f.completeStderrRead(id, result.file_read_streaming catch |e| switch (e) { |
| ... | @@ -2480,7 +2484,7 @@ const FuzzTestRunner = struct { | ... | @@ -2480,7 +2484,7 @@ const FuzzTestRunner = struct { |
| 2480 | const step_owner = f.run.step.owner; | 2484 | const step_owner = f.run.step.owner; |
| 2481 | const arena = step_owner.allocator; | 2485 | const arena = step_owner.allocator; |
| 2482 | | 2486 | |
| 2483 | // Collect any remaining stderr | 2487 | // Collect any available stderr |
| 2484 | while (f.batch.next()) |completion| { | 2488 | while (f.batch.next()) |completion| { |
| 2485 | if (completion.index % 3 != 2) continue; | 2489 | if (completion.index % 3 != 2) continue; |
| 2486 | const len = completion.result.file_read_streaming catch continue; | 2490 | const len = completion.result.file_read_streaming catch continue; |