Skip to content

stdin is NotOpenForReading when you run zig build run #12258

Description

@doongjohn

Zig Version

0.10.0-dev.3315+1a16b7214

Steps to Reproduce

// main.zigconststd=@import("std");
conststdout=std.io.getStdOut().writer();
conststdin=std.io.getStdIn().reader();
pubfnmain() !void {
vargeneral_purpose_allocator=std.heap.GeneralPurposeAllocator(.{}){};
constgalloc=general_purpose_allocator.allocator();
defer_=general_purpose_allocator.deinit();
constinput=trystdin.readUntilDelimiterAlloc(galloc, '\n', 1000);
defergalloc.free(input);
_=trystdout.print("input = {s}\n", .{input});
}
// build.zigconststd=@import("std");
pubfnbuild(b: *std.build.Builder) void {
// Standard target options allows the person running `zig build` to choose// what target to build for. Here we do not override the defaults, which// means any target is allowed, and the default is native. Other options// for restricting supported target set are available.consttarget=b.standardTargetOptions(.{});
// Standard release options allow the person running `zig build` to select// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.constmode=b.standardReleaseOptions();
constexe=b.addExecutable("app", "src/main.zig");
exe.setTarget(target);
exe.setBuildMode(mode);
exe.install();
construn_cmd=exe.run();
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
}
construn_step=b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
constexe_tests=b.addTest("src/main.zig");
exe_tests.setTarget(target);
exe_tests.setBuildMode(mode);
consttest_step=b.step("test", "Run unit tests");
test_step.dependOn(&exe_tests.step);
}
zig build run

Expected Behavior

should be able to read from stdin

Actual Behavior

~/projects/exp/zigzigbuildrunerror: NotOpenForReading/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:650:22: 0x228fd5instd.os.read (app)
.BADF=>returnerror.NotOpenForReading, // Can be a race condition.^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs/file.zig:975:13: 0x228e31instd.fs.file.File.read (app)
returnos.read(self.handle, buffer);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:26:13: 0x22ca1finstd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)
.read (app)
returnreadFn(self.context, buffer);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:232:30: 0x22c930instd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read
).readByte (app)
constamt_read=tryself.read(result[0..]);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:114:32: 0x22c811instd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read
).readUntilDelimiterArrayList (app)
varbyte: u8=tryself.readByte();
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:136:13: 0x22c562instd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read
).readUntilDelimiterAlloc (app)
tryself.readUntilDelimiterArrayList(&array_list, delimiter, max_size);
^/home/username/projects/exp/zig/src/main.zig:10:19: 0x22a1a3inmain (app)
constinput=trystdin.readUntilDelimiterAlloc(galloc, '\n', 1000);
^Thefollowingcommandexitedwitherrorcode1 (expected0):
cd/home/username/projects/exp/zig && /home/username/projects/exp/zig/zig-out/bin/apperror: UnexpectedExitCode/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2749:19: 0x2a168binstd.os.mkdiratZ (build)
.EXIST=>returnerror.PathAlreadyExists,
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2709:9: 0x2a1573instd.os.mkdirat (build)
returnmkdiratZ(dir_fd, &sub_dir_path_c, mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1332:9: 0x2a1466instd.fs.Dir.makeDir (build)
tryos.mkdirat(self.fd, sub_path, default_new_dir_mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:1680:23: 0x28afddinstd.os.openatZ (build)
.NOENT=>returnerror.FileNotFound,
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1081:13: 0x276e4cinstd.fs.Dir.openFileZ (build)
tryos.openatZ(self.fd, sub_path, os_flags, 0);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1008:9: 0x274c61instd.fs.Dir.openFile (build)
returnself.openFileZ(&path_c, flags);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2754:19: 0x2a1702instd.os.mkdiratZ (build)
.NOENT=>returnerror.FileNotFound,
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2709:9: 0x2a1573instd.os.mkdirat (build)
returnmkdiratZ(dir_fd, &sub_dir_path_c, mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1332:9: 0x2a1466instd.fs.Dir.makeDir (build)
tryos.mkdirat(self.fd, sub_path, default_new_dir_mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build/RunStep.zig:277:17: 0x2dc687instd.build.RunStep.runCommand (build)
returnerror.UnexpectedExitCode;
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build/RunStep.zig:183:5: 0x2ccad6instd.build.RunStep.make (build)
tryrunCommand(
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:3648:9: 0x2a1b9einstd.build.Step.make (build)
tryself.makeFn(self);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:508:9: 0x2a0fecinstd.build.Builder.makeOneStep (build)
trys.make();
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:502:17: 0x2a0f98instd.build.Builder.makeOneStep (build)
returnerr;
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:463:13: 0x2974c1instd.build.Builder.make (build)
tryself.makeOneStep(s);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/build_runner.zig:213:21: 0x2911b5inmain (build)
else=>returnerr,
^error: thefollowingbuildcommandfailedwithexitcode1:
/home/username/projects/exp/zig/zig-cache/o/f68e9a1804c76861e552af4fc326bcdf/build/home/username/zig/0.10.0-dev.3315+1a16b7214/files/zig/home/username/projects/exp/zig/home/username/projects/exp/zig/zig-cache/home/username/.cache/zigrun

this error only happens when build.zig is being compiled when you execute zig build run
so if you run zig build run again this error does not occur

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behavioros-windowsMicrosoft Windows

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions