Zig Version
0.17.0-dev.824+af27e8d06
Steps to Reproduce, Observed Behavior, and Expected Behavior
zig init -m
// build.zigconststd=@import("std");pubfnbuild(b:*std.Build)void{b.getInstallStep().dependOn(&b.addFmt(.{.check=true,.paths=&.{b.path("build.zig"),b.path("build.zig.zon")},}).step);}zig build
Segmentation fault at address 0x0
C:\Projects\zig\lib\std\mem.zig:1276:56: 0x7ff6126c6bb3 in findScalarPos__anon_12342 (configure_zcu.obj)
const block: Block = slice[i..][0..block_len].*;
^
C:\Projects\zig\lib\std\mem.zig:1229:25: 0x7ff6126c6829 in findScalar__anon_12333 (configure_zcu.obj)
return findScalarPos(T, slice, 0, value);
^
C:\Projects\zig\lib\std\Build\Configuration.zig:185:37: 0x7ff612856fb1 in addString (configure_zcu.obj)
assert(std.mem.indexOfScalar(u8, bytes, 0) == null);
^
C:\Projects\zig\lib\compiler\configurer.zig:187:50: 0x7ff6127d5b72 in addOptionalLazyPathEnum (configure_zcu.obj)
const sub_path = try wc.addString(src_path.sub_path);
^
C:\Projects\zig\lib\compiler\configurer.zig:229:69: 0x7ff6127d6356 in addLazyPath (configure_zcu.obj)
return @enumFromInt(@intFromEnum(try addOptionalLazyPathEnum(s, lp)));
^
C:\Projects\zig\lib\compiler\configurer.zig:480:65: 0x7ff6127d6f86 in initLazyPathList (configure_zcu.obj)
for (result, list) |*dest, src| dest.* = try addLazyPath(s, src);
^
C:\Projects\zig\lib\compiler\configurer.zig:926:72: 0x7ff6127df5e0 in serialize (configure_zcu.obj)
.paths = .{ .slice = try s.initLazyPathList(sf.paths) },
^
C:\Projects\zig\lib\compiler\configurer.zig:147:14: 0x7ff6127e9c79 in main (configure_zcu.obj)
serialize(builder, &graph.wip_configuration, &file_writer.interface) catch |err| switch (err) {
^
C:\Projects\zig\lib\std\start.zig:742: 0x7ff6127e9f09 in callMain (configure_zcu.obj)
if (fn_info.param_types[0].? == std.process.Init.Minimal) return wrapMain(root.main(.{
C:\Projects\zig\lib\std\start.zig:529:17: 0x7ff6127e9f09 in WinStartup (configure_zcu.obj)
callMain(std.os.windows.peb().ProcessParameters.CommandLine.slice(), .global),
^
???:?:?: 0x7ff8befe7373 in ??? (KERNEL32.DLL)
???:?:?: 0x7ff8c0f3cc90 in ??? (ntdll.dll)
error: the following configure command exited with code 3:
.zig-cache\o/6559161f0cef7167c657e85e74e730ce/configure.exe --zig C:\Projects\zig\stage4\bin\zig.exe --build-root C:\foo
This shouldn't segfault. Judging by the lack of dupe in lib/std/Build/Step/Fmt.zig this is probably caused by the slices and/or LazyPath string data not getting duplicated by the arena.
### Zig Version
0.17.0-dev.824+af27e8d06
### Steps to Reproduce, Observed Behavior, and Expected Behavior
```sh
zig init -m
```
```zig
// build.zig
const std = @import("std");
pub fn build(b: *std.Build) void {
b.getInstallStep().dependOn(&b.addFmt(.{
.check = true,
.paths = &.{ b.path("build.zig"), b.path("build.zig.zon") },
}).step);
}
```
```sh
zig build
```
```
Segmentation fault at address 0x0
C:\Projects\zig\lib\std\mem.zig:1276:56: 0x7ff6126c6bb3 in findScalarPos__anon_12342 (configure_zcu.obj)
const block: Block = slice[i..][0..block_len].*;
^
C:\Projects\zig\lib\std\mem.zig:1229:25: 0x7ff6126c6829 in findScalar__anon_12333 (configure_zcu.obj)
return findScalarPos(T, slice, 0, value);
^
C:\Projects\zig\lib\std\Build\Configuration.zig:185:37: 0x7ff612856fb1 in addString (configure_zcu.obj)
assert(std.mem.indexOfScalar(u8, bytes, 0) == null);
^
C:\Projects\zig\lib\compiler\configurer.zig:187:50: 0x7ff6127d5b72 in addOptionalLazyPathEnum (configure_zcu.obj)
const sub_path = try wc.addString(src_path.sub_path);
^
C:\Projects\zig\lib\compiler\configurer.zig:229:69: 0x7ff6127d6356 in addLazyPath (configure_zcu.obj)
return @enumFromInt(@intFromEnum(try addOptionalLazyPathEnum(s, lp)));
^
C:\Projects\zig\lib\compiler\configurer.zig:480:65: 0x7ff6127d6f86 in initLazyPathList (configure_zcu.obj)
for (result, list) |*dest, src| dest.* = try addLazyPath(s, src);
^
C:\Projects\zig\lib\compiler\configurer.zig:926:72: 0x7ff6127df5e0 in serialize (configure_zcu.obj)
.paths = .{ .slice = try s.initLazyPathList(sf.paths) },
^
C:\Projects\zig\lib\compiler\configurer.zig:147:14: 0x7ff6127e9c79 in main (configure_zcu.obj)
serialize(builder, &graph.wip_configuration, &file_writer.interface) catch |err| switch (err) {
^
C:\Projects\zig\lib\std\start.zig:742: 0x7ff6127e9f09 in callMain (configure_zcu.obj)
if (fn_info.param_types[0].? == std.process.Init.Minimal) return wrapMain(root.main(.{
C:\Projects\zig\lib\std\start.zig:529:17: 0x7ff6127e9f09 in WinStartup (configure_zcu.obj)
callMain(std.os.windows.peb().ProcessParameters.CommandLine.slice(), .global),
^
???:?:?: 0x7ff8befe7373 in ??? (KERNEL32.DLL)
???:?:?: 0x7ff8c0f3cc90 in ??? (ntdll.dll)
error: the following configure command exited with code 3:
.zig-cache\o/6559161f0cef7167c657e85e74e730ce/configure.exe --zig C:\Projects\zig\stage4\bin\zig.exe --build-root C:\foo
```
This shouldn't segfault. Judging by the lack of `dupe` in [`lib/std/Build/Step/Fmt.zig`](https://codeberg.org/ziglang/zig/src/commit/af27e8d06fe151cf689e3a6e33b660e3cd4ac8d0/lib/std/Build/Step/Fmt.zig#L27-L46) this is probably caused by the slices and/or `LazyPath` string data not getting duplicated by the arena.