Open
Description
Zig Version and OS
zig master (commit 75d6d4c), regressed in #24124; OS: Arch Linux
Steps to Reproduce and Observed Behavior
cc bootstrap.c -o bootstrap
./bootstrap
./zig2 build install -Doptimize=ReleaseFast -Dno-lib -Dno-langref --prefix zig3
Zig crashes in step 3 from this small command list (building zig3 using zig2), but only when in ReleaseFast mode.
Expected Behavior
I expected it not to crash, as it did before #24124 (and in current master in debug mode).
Stack Trace
It also crashes when letting the zig3 compiler (in debug mode, from zig2) compile a compiler "zig4" in ReleaseFast mode, allowing me to get a stack trace:
/home/sfiedler/exec/zig/src/Type.zig:1080:30: 0x2a23b1b in abiAlignmentInner__anon_250493 (main.zig)
.noreturn => unreachable,
^
/home/sfiedler/exec/zig/src/Type.zig:943:33: 0x24a61df in abiAlignment (main.zig)
return (ty.abiAlignmentInner(.eager, zcu, {}) catch unreachable).scalar;
^
/home/sfiedler/exec/zig/src/link/Dwarf.zig:3035:44: 0x3b14b85 in updateComptimeNavInner (main.zig)
field_type.abiAlignment(zcu).toByteUnits().?);
^
/home/sfiedler/exec/zig/src/link/Dwarf.zig:2752:34: 0x3b1d7ef in updateComptimeNav (main.zig)
return updateComptimeNavInner(dwarf, pt, nav_index) catch |err| switch (err) {
^
/home/sfiedler/exec/zig/src/link/Elf/ZigObject.zig:1594:64: 0x330bdbb in updateNav (main.zig)
} else if (self.dwarf) |*dwarf| try dwarf.updateComptimeNav(pt, nav_index);
^
/home/sfiedler/exec/zig/src/link/Elf.zig:1701:43: 0x2a437e1 in updateNav (main.zig)
return self.zigObjectPtr().?.updateNav(self, pt, nav);
^
/home/sfiedler/exec/zig/src/link.zig:719:81: 0x24c673b in updateNav (main.zig)
return @as(*tag.Type(), @fieldParentPtr("base", base)).updateNav(pt, nav_index);
^
/home/sfiedler/exec/zig/src/link.zig:1438:29: 0x297e02c in doZcuTask (main.zig)
lf.updateNav(pt, nav_index) catch |err| switch (err) {
^
/home/sfiedler/exec/zig/src/link/Queue.zig:255:23: 0x2949bf5 in flushTaskQueue (main.zig)
link.doZcuTask(comp, tid, task);
^
/home/sfiedler/exec/zig/lib/std/Thread/Pool.zig:180:50: 0x294a49b in runFn (std.zig)
@call(.auto, func, .{id.?} ++ closure.arguments);
^
/home/sfiedler/exec/zig/lib/std/Thread/Pool.zig:293:27: 0x28c456d in worker (std.zig)
runnable.runFn(runnable, id);
^
/home/sfiedler/exec/zig/lib/std/Thread.zig:510:13: 0x23b639b in callFn__anon_190812 (std.zig)
@call(.auto, f, args);
^
/home/sfiedler/exec/zig/lib/std/Thread.zig:1403:30: 0x1e98d1e in entryFn (std.zig)
return callFn(f, self.fn_args);
^
/home/sfiedler/exec/zig/lib/std/os/linux/x86_64.zig:126:5: 0x23b64a0 in clone (std.zig)
asm volatile (
^
???:?:?: 0x0 in ??? (???)
So it looks like something with the linker happened.