authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-03 20:23:55-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-04 00:27:09-08:00
log9eb3b54eb5442b13d268a7965998c6ffc5004d6a
treebde10558d71745b44cdb1b52eb6abf22fde3c0a7
parent854c076ff7560de9b3f05ee15e1e30a90d738839

std.Io.Threaded: revert making reading fork child status cancelable

this caused the build runner to crash sometimes, not sure why yet

1 files changed, 2 insertions(+), 12 deletions(-)

lib/std/Io/Threaded.zig+2-12
......@@ -13070,11 +13070,6 @@ fn processSpawnPosix(userdata: ?*anyopaque, options: process.SpawnOptions) proce
1307013070 const child_err: process.SpawnError = @errorCast(@errorFromInt(child_err_int));
1307113071 return child_err;
1307213072 } else |read_err| switch (read_err) {
13073 error.Canceled => {
13074 // We don't want to wait for the error to be reported, but we do
13075 // need to return the child so that it can be cleaned up.
13076 recancelInner();
13077 },
1307813073 error.EndOfStream => {
1307913074 // Write end closed by CLOEXEC at the time of the `execvpe` call,
1308013075 // indicating success.
......@@ -13378,22 +13373,17 @@ fn writeIntFd(fd: posix.fd_t, value: ErrInt) !void {
1337813373fn readIntFd(fd: posix.fd_t) !ErrInt {
1337913374 var buffer: [8]u8 = undefined;
1338013375 var i: usize = 0;
13381 const syscall: Syscall = try .start();
1338213376 while (true) {
1338313377 const rc = posix.system.read(fd, buffer[i..].ptr, buffer.len - i);
1338413378 switch (posix.errno(rc)) {
1338513379 .SUCCESS => {
13386 syscall.finish();
1338713380 const n: usize = @intCast(rc);
1338813381 if (n == 0) break;
1338913382 i += n;
1339013383 continue;
1339113384 },
13392 .INTR => {
13393 try syscall.checkCancel();
13394 continue;
13395 },
13396 else => |err| return syscall.unexpectedErrno(err),
13385 .INTR => continue,
13386 else => |err| return posix.unexpectedErrno(err),
1339713387 }
1339813388 }
1339913389 if (buffer.len - i != 0) return error.EndOfStream;