Zig Version
0.16.0-dev.2611+f996d2866
Steps to Reproduce and Observed Behavior
On Linux Mint, this snippet throws unexpected errno 95:
pubfnmain(init:@import("std").process.Init)!void{_=try@import("std").Io.Dir.cwd().createFileAtomic(init.io,"./test.txt",.{});}
$ zig run src/main.zig 1 ↵
unexpected errno: 95
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/posix.zig:1692:40: 0x106e400 in unexpectedErrno (std.zig)
std.debug.dumpCurrentStackTrace(.{});
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:1407:37: 0x106c5e8 in unexpectedErrno (std.zig)
return posix.unexpectedErrno(err);
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:4763:61: 0x1045ac5 in dirCreateFileAtomic (std.zig)
else => |err| return syscall.unexpectedErrno(err),
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Dir.zig:1815:41: 0x11b1173 in createFileAtomic (std.zig)
return io.vtable.dirCreateFileAtomic(io.userdata, dir, sub_path, options);
^
~/zig/lol/src/main.zig:2:57: 0x11aef56 in main (main.zig)
_ = try @import("std").Io.Dir.cwd().createFileAtomic(init.io, "./test.txt", .{});
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/start.zig:716:30: 0x11af94f in callMain (std.zig)
return wrapMain(root.main(.{
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/start.zig:190:5: 0x11aee91 in _start (std.zig)
asm volatile (switch (native_arch) {
^
error: Unexpected
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/posix.zig:1694:5: 0x106e405 in unexpectedErrno (std.zig)
return error.Unexpected;
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:1407:9: 0x106c5f2 in unexpectedErrno (std.zig)
return posix.unexpectedErrno(err);
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:4763:31: 0x1045b06 in dirCreateFileAtomic (std.zig)
else => |err| return syscall.unexpectedErrno(err),
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Dir.zig:1815:5: 0x11b11a8 in createFileAtomic (std.zig)
return io.vtable.dirCreateFileAtomic(io.userdata, dir, sub_path, options);
^
~/zig/lol/src/main.zig:2:9: 0x11aef9e in main (main.zig)
_ = try @import("std").Io.Dir.cwd().createFileAtomic(init.io, "./test.txt", .{});
^
Adding .OPPNOTSUP to this prong in lib/std/Io/Threaded.zig fixes the issue (line 4742):
.ISDIR,.NOENT,.OPNOTSUPP=>{// Ambiguous error code. It might mean the file system// does not support O_TMPFILE. Therefore, we must fall// back to not using O_TMPFILE.syscall.finish();break:tmpfile;},
Here's my OS info:
Kernel: 6.8.0-100-generic arch: x86_64 bits: 64 compiler: gcc v: 13.3.0 clocksource: tsc
Desktop: Cinnamon v: 6.6.7 tk: GTK v: 3.24.41 wm: Muffin v: 6.6.3 vt: 7 dm: LightDM v: 1.30.0
Distro: Linux Mint 22.3 Zena base: Ubuntu 24.04 noble
Expected Behavior
No error, file created as normal
### Zig Version
0.16.0-dev.2611+f996d2866
### Steps to Reproduce and Observed Behavior
On Linux Mint, this snippet throws unexpected errno 95:
```zig
pub fn main(init: @import("std").process.Init) !void {
_ = try @import("std").Io.Dir.cwd().createFileAtomic(init.io, "./test.txt", .{});
}
```
```
$ zig run src/main.zig 1 ↵
unexpected errno: 95
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/posix.zig:1692:40: 0x106e400 in unexpectedErrno (std.zig)
std.debug.dumpCurrentStackTrace(.{});
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:1407:37: 0x106c5e8 in unexpectedErrno (std.zig)
return posix.unexpectedErrno(err);
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:4763:61: 0x1045ac5 in dirCreateFileAtomic (std.zig)
else => |err| return syscall.unexpectedErrno(err),
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Dir.zig:1815:41: 0x11b1173 in createFileAtomic (std.zig)
return io.vtable.dirCreateFileAtomic(io.userdata, dir, sub_path, options);
^
~/zig/lol/src/main.zig:2:57: 0x11aef56 in main (main.zig)
_ = try @import("std").Io.Dir.cwd().createFileAtomic(init.io, "./test.txt", .{});
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/start.zig:716:30: 0x11af94f in callMain (std.zig)
return wrapMain(root.main(.{
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/start.zig:190:5: 0x11aee91 in _start (std.zig)
asm volatile (switch (native_arch) {
^
error: Unexpected
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/posix.zig:1694:5: 0x106e405 in unexpectedErrno (std.zig)
return error.Unexpected;
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:1407:9: 0x106c5f2 in unexpectedErrno (std.zig)
return posix.unexpectedErrno(err);
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Threaded.zig:4763:31: 0x1045b06 in dirCreateFileAtomic (std.zig)
else => |err| return syscall.unexpectedErrno(err),
^
~/zig/0.16.0-dev.2611+f996d2866/files/lib/std/Io/Dir.zig:1815:5: 0x11b11a8 in createFileAtomic (std.zig)
return io.vtable.dirCreateFileAtomic(io.userdata, dir, sub_path, options);
^
~/zig/lol/src/main.zig:2:9: 0x11aef9e in main (main.zig)
_ = try @import("std").Io.Dir.cwd().createFileAtomic(init.io, "./test.txt", .{});
^
```
Adding `.OPPNOTSUP` to this prong in `lib/std/Io/Threaded.zig` fixes the issue (line 4742):
```zig
.ISDIR, .NOENT, .OPNOTSUPP => {
// Ambiguous error code. It might mean the file system
// does not support O_TMPFILE. Therefore, we must fall
// back to not using O_TMPFILE.
syscall.finish();
break :tmpfile;
},
```
Here's my OS info:
```
Kernel: 6.8.0-100-generic arch: x86_64 bits: 64 compiler: gcc v: 13.3.0 clocksource: tsc
Desktop: Cinnamon v: 6.6.7 tk: GTK v: 3.24.41 wm: Muffin v: 6.6.3 vt: 7 dm: LightDM v: 1.30.0
Distro: Linux Mint 22.3 Zena base: Ubuntu 24.04 noble
```
### Expected Behavior
No error, file created as normal