Open
Description
Zig Version
0.15.0-dev.870+710632b45
Steps to Reproduce and Observed Behavior
git clone https://github.com/oven-sh/bun
cd bun
git checkout d2bca43f5ddbdd19e560600b83c870a7fc71b9ce
# download codegen-for-zig-team from above
tar -xzvf codegen-for-zig-team.tar.gz
zig build obj -Dtarget=x86_64-linux -Dno_llvm -Dcodegen_path=build/debug/codegen --prefix build/debug
Building without -Dno_llvm
builds successfully without crashing
Stacktrace from a debug build of zig:
info: zig compiler v0.15.0-dev.870+710632b45
obj
└─ install generated to bun-zig.o
└─ compile obj bun-debug Debug x86_64-linux failure
error: thread 46352313 panic: access of union field 'func' while field 'extern' is active
/Users/pfg/Dev/Node/zig/src/InternPool.zig:12142:28: 0x10feb6b2f in toFunc (zig)
return ip.indexToKey(i).func;
^
/Users/pfg/Dev/Node/zig/src/Zcu.zig:4012:34: 0x10fd51703 in funcInfo (zig)
return zcu.intern_pool.toFunc(func_index);
^
/Users/pfg/Dev/Node/zig/src/link/Dwarf.zig:1910:110: 0x110becd3b in getValueEntry (zig)
if (ip.isFunctionType(ty.toIntern()) and !value.isUndef(zcu)) return wip_nav.getNavEntry(zcu.funcInfo(value.toIntern()).owner_nav);
^
/Users/pfg/Dev/Node/zig/src/link/Dwarf.zig:1921:60: 0x110beb6e7 in refValue (zig)
const unit, const entry = try wip_nav.getValueEntry(value);
^
/Users/pfg/Dev/Node/zig/src/link/Dwarf.zig:1526:53: 0x1116020af in genLocalConstDebugInfo (zig)
if (has_comptime_state) try wip_nav.refValue(val);
^
/Users/pfg/Dev/Node/zig/src/arch/x86_64/Emit.zig:621:61: 0x11112fbeb in emitMir (zig)
try dwarf.genLocalConstDebugInfo(
^
/Users/pfg/Dev/Node/zig/src/arch/x86_64/Mir.zig:2029:14: 0x1112e6383 in emit (zig)
e.emitMir() catch |err| switch (err) {
^
/Users/pfg/Dev/Node/zig/src/codegen.zig:198:28: 0x110ec56d7 in emitFunction (zig)
return mir.emit(lf, pt, src_loc, func_index, code, debug_output);
^
/Users/pfg/Dev/Node/zig/src/link/Elf/ZigObject.zig:1438:29: 0x110ec5a97 in updateFunc (zig)
try codegen.emitFunction(
^
/Users/pfg/Dev/Node/zig/src/link/Elf.zig:1690:44: 0x110a10a6f in updateFunc (zig)
return self.zigObjectPtr().?.updateFunc(self, pt, func_index, mir);
^
/Users/pfg/Dev/Node/zig/src/link.zig:761:82: 0x110662e8f in updateFunc (zig)
return @as(*tag.Type(), @fieldParentPtr("base", base)).updateFunc(pt, func_index, mir);
^
/Users/pfg/Dev/Node/zig/src/link.zig:1464:30: 0x1102f0887 in doZcuTask (zig)
lf.updateFunc(pt, func.func, mir) catch |err| switch (err) {
^
/Users/pfg/Dev/Node/zig/src/link/Queue.zig:255:23: 0x1102bd8df in flushTaskQueue (zig)
link.doZcuTask(comp, tid, task);
^
/Users/pfg/Dev/Node/zig/lib/std/Thread/Pool.zig:180:50: 0x1102bdc77 in runFn (zig)
@call(.auto, func, .{id.?} ++ closure.arguments);
^
/Users/pfg/Dev/Node/zig/lib/std/Thread/Pool.zig:293:27: 0x11027abab in worker (zig)
runnable.runFn(runnable, id);
^
/Users/pfg/Dev/Node/zig/lib/std/Thread.zig:510:13: 0x10ff7ac27 in callFn__anon_194523 (zig)
@call(.auto, f, args);
^
/Users/pfg/Dev/Node/zig/lib/std/Thread.zig:782:30: 0x10fe213cb in entryFn (zig)
return callFn(f, args_ptr.*);
^
???:?:?: 0x189e442e3 in ??? (libsystem_pthread.dylib)
???:?:?: 0x189e3f0fb in ??? (libsystem_pthread.dylib)
Expected Behavior
No crash