Skip to content

Panic while building bun without LLVM: "access of union field 'func' while field 'extern' is active" #24259

Open
@pfgithub

Description

@pfgithub

Zig Version

0.15.0-dev.870+710632b45

Steps to Reproduce and Observed Behavior

codegen-for-zig-team.tar.gz

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behaviorlinkingos-linux

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions