Zig Version
0.16.0-dev.2915+065c6e794
Steps to Reproduce and Observed Behavior
The compiler is segfaulting without any useful information, it simply dies. I've built the compiler in debug mode, and then ran it using the failing command to get a useful stacktrace. Sadly the project is too big to bisect to provide a minimal repro case. I hope this dump provides some clarity for those who know the compiler, if it doesn't we can close the issue.
A very important detail is that it only works targeting x86_64-linux-*. From linux only, although I can cross-compile successfully. And it ONLY fails on -Doptimize=Debug, all other release modes work.
NOTE: I've used 0.16.0-dev.2915+065c6e794 as version, but also tested with the more recent 10256e1b81a52b62581dfe643618aba8dfc64b9e
I'm available to build and test patches.
The failing command is
zig build-exe .zig-cache/o/45d62dbc15a3bc0f66ef5a4cbe170620/libyoga.a .zig-cache/o/8c840c0c67a6ef6af095a0caf60031b7/libzgui.a .zig-cache/o/47106f5c9a4fe65d21b2269d2d325b06/libwgpu.a .zig-cache/o/c0475be8dc686f177f3139fc57465748/libzig-basisu.a .zig-cache/o/2a85fae3c21008389386e8a443376d67/libzstbi.a .zig-cache/o/71f5bfbb9561e267883edf25975c9b3a/libsteamworks.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -rpath \$ORIGIN --dep build_options --dep tier0 --dep ecs --dep tier1 --dep mach-glfw --dep opus --dep protobuf --dep protocol --dep server --dep shared --dep wgpu --dep steamworks --dep zaudio --dep yoga --dep zgui --dep zlm -Mroot=/home/usr/code/zt-arduz/src/client/main.zig -Mbuild_options=.zig-cache/c/461f9617a842818acaa3eb71611b96dd/options.zig --dep wgpu --dep mach-glfw -Mtier0=/home/usr/code/zt-arduz/src/tier0/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Mecs=/home/usr/code/zt-arduz/libs/zig-ecs/src/ecs.zig .zig-cache/o/2a85fae3c21008389386e8a443376d67/libzstbi.a .zig-cache/o/c0475be8dc686f177f3139fc57465748/libzig-basisu.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 --dep basisu --dep tier0 --dep wgpu --dep protocol --dep shared --dep zlm --dep zstbi -Mtier1=/home/usr/code/zt-arduz/src/tier1/main.zig .zig-cache/o/46d5061decb977eeb201a153cb035fff/libglfw.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/cafc87ea1c4a730e4b7d4d4058e84fd9 -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/include -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/vulkan-headers/include/vk_video -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/vulkan-headers/include/vulkan -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/GL -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/X11 -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/xcb -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/xkbcommon -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/wayland-headers/wayland -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/wayland-headers/wayland-protocols -Mmach-glfw=/home/usr/code/zt-arduz/libs/mach-glfw/src/main.zig .zig-cache/o/be463b3b312bc7d18ae3199fab51ec48/libopusfile.a .zig-cache/o/299008c332824a16ac8938203ee8659d/libopusenc.a -I .zig-cache/o/f22d7316f1b5f2ae8fb9d878831b460e -I .zig-cache/o/403429ff5ea0921584dfc7a1597eb86b -D_FORTIFY_SOURCE=0 -Mopus=/home/usr/code/zt-arduz/libs/mach-opus/src/lib.zig -Mprotobuf=/home/usr/code/zt-arduz/zig-pkg/protobuf-3.0.0-0e82amqTKAAp7pNyUmCcPa1CTAimGps-WPcot4Ipc-d4/src/protobuf.zig --dep protobuf -Mprotocol=/home/usr/code/zt-arduz/src/protocol/arduz.pb.zig -ODebug -target x86_64-linux-gnu -mcpu baseline --dep ecs --dep zlm --dep protocol --dep steamworks --dep shared --dep protobuf -Mserver=/home/usr/code/zt-arduz/src/server/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline --dep zlm --dep ecs --dep protocol --dep steamworks --dep build_options -Mshared=/home/usr/code/zt-arduz/src/shared/main.zig -lwgpu_native -ODebug -target x86_64-linux-gnu -mcpu baseline -L /home/usr/code/zt-arduz/zig-pkg/N-V-__8AAIKoTRXldpH5qBKlXug1Vt2WJ7qWiFm5RLAKkQww/lib -Mwgpu=/home/usr/code/zt-arduz/libs/wgpu/src/wgpu.zig -search_paths_first_static -needed-lsdkencryptedappticket -needed-lsteam_api -cflags -Wno-return-type-c-linkage -fno-sanitize=undefined -Wgnu-alignof-expression -Wno-gnu -- /home/usr/code/zt-arduz/libs/zig-steamworks/src/steam.cpp -ODebug -target x86_64-linux-gnu -mcpu baseline -I /home/usr/code/zt-arduz/libs/zig-steamworks/steamworks/public/steam -L /home/usr/code/zt-arduz/libs/zig-steamworks/steamworks/public/steam/lib/linux64 -L /home/usr/code/zt-arduz/libs/zig-steamworks/steamworks/redistributable_bin/linux64 -Msteamworks=/home/usr/code/zt-arduz/libs/zig-steamworks/src/main.zig -cflags -std=c99 -- /home/usr/code/zt-arduz/libs/zaudio/src/zaudio.c -cflags -DMA_NO_WEBAUDIO -DMA_NO_ENCODING -DMA_NO_NULL -DMA_NO_JACK -DMA_NO_DSOUND -DMA_NO_WINMM -std=c99 -fno-sanitize=undefined -- /home/usr/code/zt-arduz/libs/zaudio/libs/miniaudio/miniaudio.c -ODebug -target x86_64-linux-gnu -mcpu baseline -I /home/usr/code/zt-arduz/libs/zaudio/libs/miniaudio -Mzaudio=/home/usr/code/zt-arduz/libs/zaudio/src/zaudio.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Myoga=.zig-cache/o/439f1b3e8029f6e564e93333b1421f79/Yoga.zig -ODebug -target x86_64-linux-gnu -mcpu baseline --dep zlm --dep mach-glfw -Mzgui=/home/usr/code/zt-arduz/libs/zgui/src/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Mzlm=/home/usr/code/zt-arduz/libs/zlm/src/zlm.zig -cflags -- /home/usr/code/zt-arduz/libs/zig-basisu/src/encoder/wrapper.cpp /home/usr/code/zt-arduz/libs/zig-basisu/src/transcoder/wrapper.cpp .zig-cache/o/2f4c59b306057af15486fa9518c14099/libbasisu.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/95ccdd123f6da826a5b5760d4320d656 -Mbasisu=/home/usr/code/zt-arduz/libs/zig-basisu/src/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Mzstbi=/home/usr/code/zt-arduz/libs/zstbi/src/zstbi.zig .zig-cache/o/46d5061decb977eeb201a153cb035fff/libglfw.a .zig-cache/o/2f4c59b306057af15486fa9518c14099/libbasisu.a .zig-cache/o/eac4e016153a82eb5b161034c9672ca9/libopus.a .zig-cache/o/e52ac754403eac130f9a84dca17c78d9/libogg.a .zig-cache/o/eac4e016153a82eb5b161034c9672ca9/libopus.a -lc++ -lc --cache-dir .zig-cache --global-cache-dir /home/usr/.cache/zig --name arduz-linux --zig-lib-dir /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/
And the hopefully insightful output is
Compiler crash context:
Analyzing '/nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig'
%1250 = dbg_stmt(21, 17)
%1251 = block_comptime(reason=type, {
%1252 = break_inline(%1251, %1192)
})
%1253 = alloc_mut(%1251)
%1254 = store_node(%1253, @undef)
%1255 = dbg_var_ptr(%1253, "item")
%1256 = dbg_stmt(22, 17)
%1257 = decl_val("asBytes")
%1258 = dbg_stmt(22, 32)
%1259 = call(.auto, %1257, [
{
%1260 = validate_ref_ty(%1259)
%1261 = break_inline(%1259, %1253)
},
])
%1262 = typeof(%1259)
%1263 = indexable_ptr_elem_type(%1262)
> %1264 = memset(%1259, @zero)
%1265 = dbg_stmt(23, 17)
%1266 = load(%1253)
%1267 = dbg_stmt(23, 17)
%1268 = restore_err_ret_index_fn_entry(%1266)
%1269 = ret_node(%1266)
For full context, use the command
/home/usr/code/zt-arduz/zig/bin/zig ast-check -t /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
in /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
> %1248 = condbr(%1247, {%1250..%1269}, {%1270..%1322})
in /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
> %1249 = block({%1244..%1248})
in /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
> %1199 = switch_block(%1197,
".enum" => {%1207..%1215},
".void" => {%1216..%1222},
".bool" => {%1223..%1225},
by_val=%1199 ".struct" => {%1243..%1324},
by_val=%1199 ".pointer" => {%1327..%1391},
by_val=%1199 ".array" => {%1398..%1406},
by_val=%1199 ".vector" => {%1413..%1421},
by_val=%1199 ".union" => {%1424..%1461},
".comptime_int", ".int", ".comptime_float", ".float" => {%1200..%1206},
".optional", ".null" => {%1226..%1228},
".enum_literal", ".error_union", ".error_set", ".fn", ".type", ".noreturn", ".undefined", ".opaque", ".frame", ".anyframe" => {%1462..%1470})
in libs/zgui/src/cimgui.zig
> %11847 = field_call(.auto, %11845, "zeroes", [
{%11848, %11849},
])
thread 535573 panic: index out of bounds: index 3, len 3
/home/usr/code/zig/src/Sema/bitcast.zig:742:53: 0x4310840 in prepareBits (main.zig)
bits += Value.fromInterned(pack.unpacked[len]).typeOf(pt.zcu).bitSize(zcu);
^
/home/usr/code/zig/src/Sema/bitcast.zig:670:29: 0x4310658 in padding (main.zig)
_ = pack.prepareBits(pad_bits);
^
/home/usr/code/zig/src/Sema/bitcast.zig:537:49: 0x430d6c5 in get (main.zig)
try pack.padding(want_bit_off - cur_bit_off);
^
/home/usr/code/zig/src/Sema/bitcast.zig:514:62: 0x430cf5c in get (main.zig)
elems[@intCast(real_idx)] = (try pack.get(elem_ty)).toIntern();
^
/home/usr/code/zig/src/Sema/bitcast.zig:539:65: 0x430d80a in get (main.zig)
elems[field_idx] = (try pack.get(field_ty)).toIntern();
^
/home/usr/code/zig/src/Sema/bitcast.zig:206:20: 0x430bb51 in bitCastSpliceInner (main.zig)
return pack.get(val_ty);
^
/home/usr/code/zig/src/Sema/bitcast.zig:54:30: 0x4308c72 in bitCastSplice (main.zig)
return bitCastSpliceInner(sema, val, splice_val, byte_offset, host_bits, bit_offset) catch |err| switch (err) {
^
/home/usr/code/zig/src/Sema/comptime_ptr_access.zig:192:46: 0x42fa0ee in storeComptimePtr (main.zig)
const new_val = try sema.bitCastSpliceVal(
^
/home/usr/code/zig/src/Sema.zig:29323:38: 0x42fb3c0 in storePtrVal (main.zig)
switch (try sema.storeComptimePtr(block, src, coerced_ptr_val, coerced_operand_val)) {
^
/home/usr/code/zig/src/Sema.zig:24380:32: 0x4359571 in zirMemset (main.zig)
return sema.storePtrVal(block, src, array_ptr_val, array_val, array_ty);
^
/home/usr/code/zig/src/Sema.zig:1641:35: 0x42dc698 in analyzeBodyInner (main.zig)
try sema.zirMemset(block, inst);
^
/home/usr/code/zig/src/Sema.zig:1072:30: 0x4331542 in analyzeInlineBody (main.zig)
if (sema.analyzeBodyInner(block, body)) {
^
/home/usr/code/zig/src/Sema.zig:1916:58: 0x42e02d1 in analyzeBodyInner (main.zig)
const result = try sema.analyzeInlineBody(block, inline_body, inst) orelse break;
^
/home/usr/code/zig/src/Sema.zig:1819:81: 0x42dec88 in analyzeBodyInner (main.zig)
const break_result: ?BreakResult = if (sema.analyzeBodyInner(&child_block, inline_body)) r: {
^
/home/usr/code/zig/src/Sema.zig:1072:30: 0x4331542 in analyzeInlineBody (main.zig)
if (sema.analyzeBodyInner(block, body)) {
^
/home/usr/code/zig/src/Sema.zig:1105:39: 0x49560b2 in resolveInlineBody (main.zig)
return (try sema.analyzeInlineBody(block, body, break_target)) orelse .unreachable_value;
^
/home/usr/code/zig/src/Sema.zig:5418:38: 0x433e69c in resolveBlockBody (main.zig)
return sema.resolveInlineBody(child_block, body, body_inst);
^
/home/usr/code/zig/src/Sema.zig:12055:33: 0x47dd089 in resolveSwitchProng (main.zig)
return sema.resolveBlockBody(block, src, child_block, prong_body, switch_inst, merges);
^
/home/usr/code/zig/src/Sema.zig:11829:47: 0x47d98ac in resolveSwitchBlock (main.zig)
return sema.resolveSwitchProng(
^
/home/usr/code/zig/src/Sema.zig:10281:40: 0x476bf99 in analyzeSwitchBlock (main.zig)
if (sema.resolveSwitchBlock(
^
/home/usr/code/zig/src/Sema.zig:10173:50: 0x476a6f4 in zirSwitchBlock (main.zig)
const maybe_ref = try sema.analyzeSwitchBlock(block, &child_block, raw_operand, operand_is_ref, merges, inst, &zir_switch, &validated_switch);
^
/home/usr/code/zig/src/Sema.zig:1261:69: 0x42d2172 in analyzeBodyInner (main.zig)
.switch_block => try sema.zirSwitchBlock(block, inst, false),
^
/home/usr/code/zig/src/Sema.zig:1054:26: 0x42742c1 in analyzeFnBody (main.zig)
sema.analyzeBodyInner(block, body) catch |err| switch (err) {
^
/home/usr/code/zig/src/Sema.zig:7457:27: 0x4282e1b in analyzeCall (main.zig)
sema.analyzeFnBody(&child_block, fn_zir_info.body) catch |err| switch (err) {
^
/home/usr/code/zig/src/Sema.zig:6357:43: 0x48809de in zirCall__anon_1419606 (main.zig)
const call_inst = try sema.analyzeCall(block, func, func_ty, callee_src, call_src, modifier, ensure_result_used, args_info, call_dbg_node, .call);
^
/home/usr/code/zig/src/Sema.zig:1194:62: 0x42cedb0 in analyzeBodyInner (main.zig)
.field_call => try sema.zirCall(block, inst, .field),
^
/home/usr/code/zig/src/Sema.zig:1072:30: 0x4331542 in analyzeInlineBody (main.zig)
if (sema.analyzeBodyInner(block, body)) {
^
/home/usr/code/zig/src/Sema.zig:1105:39: 0x49560b2 in resolveInlineBody (main.zig)
return (try sema.analyzeInlineBody(block, body, break_target)) orelse .unreachable_value;
^
/home/usr/code/zig/src/Sema/type_resolution.zig:637:50: 0x5edeeae in resolveStructDefaultsInner (main.zig)
break :ref try sema.resolveInlineBody(block, default_body, zir_index);
^
/home/usr/code/zig/src/Sema/type_resolution.zig:591:38: 0x5eddeb3 in resolveStructDefaults (main.zig)
return resolveStructDefaultsInner(sema, &block, &struct_obj, .normal_fields);
^
/home/usr/code/zig/src/Zcu/PerThread.zig:1533:76: 0x5edbda5 in ensureStructDefaultsUpToDate (main.zig)
const new_failed: bool = if (Sema.type_resolution.resolveStructDefaults(&sema, ty)) failed: {
^
/home/usr/code/zig/src/Zcu/PerThread.zig:336:59: 0x40f3685 in update (main.zig)
break :res pt.ensureStructDefaultsUpToDate(.fromInterned(ty), null);
^
/home/usr/code/zig/src/Compilation.zig:4516:22: 0x3c9a35d in performAllTheWork (main.zig)
try pt.update(main_progress_node, &decl_work_timer);
^
/home/usr/code/zig/src/Compilation.zig:3085:31: 0x2500239 in update (main.zig)
try comp.performAllTheWork(main_progress_node, arena);
^
/home/usr/code/zig/src/main.zig:4671:20: 0x24a15bb in updateModule (main.zig)
try comp.update(prog_node);
^
/home/usr/code/zig/src/main.zig:3767:21: 0x1b52a61 in buildOutputType (main.zig)
updateModule(comp, color, root_prog_node) catch |err| switch (err) {
^
/home/usr/code/zig/src/main.zig:282:31: 0x1b9e1d3 in mainArgs (main.zig)
return buildOutputType(gpa, arena, io, args, .{ .build = .Exe }, environ_map);
^
/home/usr/code/zig/src/main.zig:235:20: 0x1af9c84 in main (main.zig)
return mainArgs(gpa, arena, io, args, &environ_map);
^
/nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/start.zig:678:88: 0x1af87d1 in callMain (std.zig)
if (fn_info.params[0].type.? == std.process.Init.Minimal) return wrapMain(root.main(.{
^
/nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/start.zig:190:5: 0x1af81d1 in _start (std.zig)
asm volatile (switch (native_arch) {
^
[25972/25972] Linking
Thread 1 "zig" received signal SIGABRT, Aborted.
0x0000000001877b2b in os.linux.x86_64.syscall4 (number=rt_sigprocmask, arg1=2, arg2=わ140737487928048, arg3=0, arg4=8)
(gdb) gui.struct_ImGuiContext
The failing AST is
IO: {
%11129 = decl_val("ImGuiIO") token_offset:2672:9 to :2672:16
%11130 = break_inline(%11124, %11129)
} = {
%11131 = import(.none, "std") token_offset:2672:27 to :2672:32
%11132 = ref(%11131) token_offset:2672:19 to :2672:26
%11133 = field_ptr(%11132, "mem") node_offset:2672:19 to :2672:37
%11134 = dbg_stmt(4, 44)
> %11135 = field_call(.auto, %11133, "zeroes", [
{
%11136 = decl_val("ImGuiIO") token_offset:2672:45 to :2672:52
%11137 = break_inline(%11135, %11136)
},
]) node_offset:2672:19 to :2672:53
%11138 = break_inline(%11124, %11135)
},
It corresponds to the zig translate-c code of Dear ImGui. Sadly a trivial application does not fail to compile, I couldn't isolate a repro case.
// ...pubconstImGuiStackTool=struct_ImGuiStackTool;pubconststruct_ImGuiContext=externstruct{Initialized:bool=false,FontAtlasOwnedByContext:bool=false,IO:ImGuiIO=@import("std").mem.zeroes(ImGuiIO),// <<<<<<<<<<<<<<<<<<<<<<<<PlatformIO:ImGuiPlatformIO=@import("std").mem.zeroes(ImGuiPlatformIO),Style:ImGuiStyle=@import("std").mem.zeroes(ImGuiStyle),ConfigFlagsCurrFrame:ImGuiConfigFlags=0,// ...}// ...pubconststruct_ImGuiIO=externstruct{ConfigFlags:ImGuiConfigFlags=0,BackendFlags:ImGuiBackendFlags=0,DisplaySize:ImVec2=@import("std").mem.zeroes(ImVec2),DeltaTime:f32=0,IniSavingRate:f32=0,IniFilename:[*c]constu8=null,LogFilename:[*c]constu8=null,UserData:?*anyopaque=null,Fonts:[*c]ImFontAtlas=null,FontGlobalScale:f32=0,FontAllowUserScaling:bool=false,FontDefault:[*c]ImFont=null,DisplayFramebufferScale:ImVec2=@import("std").mem.zeroes(ImVec2),ConfigDockingNoSplit:bool=false,ConfigDockingWithShift:bool=false,ConfigDockingAlwaysTabBar:bool=false,ConfigDockingTransparentPayload:bool=false,ConfigViewportsNoAutoMerge:bool=false,ConfigViewportsNoTaskBarIcon:bool=false,ConfigViewportsNoDecoration:bool=false,ConfigViewportsNoDefaultParent:bool=false,MouseDrawCursor:bool=false,ConfigMacOSXBehaviors:bool=false,ConfigInputTrickleEventQueue:bool=false,ConfigInputTextCursorBlink:bool=false,ConfigInputTextEnterKeepActive:bool=false,ConfigDragClickToInputText:bool=false,ConfigWindowsResizeFromEdges:bool=false,ConfigWindowsMoveFromTitleBarOnly:bool=false,ConfigMemoryCompactTimer:f32=0,MouseDoubleClickTime:f32=0,MouseDoubleClickMaxDist:f32=0,MouseDragThreshold:f32=0,KeyRepeatDelay:f32=0,KeyRepeatRate:f32=0,ConfigDebugBeginReturnValueOnce:bool=false,ConfigDebugBeginReturnValueLoop:bool=false,ConfigDebugIgnoreFocusLoss:bool=false,ConfigDebugIniSettings:bool=false,BackendPlatformName:[*c]constu8=null,BackendRendererName:[*c]constu8=null,BackendPlatformUserData:?*anyopaque=null,BackendRendererUserData:?*anyopaque=null,BackendLanguageUserData:?*anyopaque=null,GetClipboardTextFn:?*constfn(user_data:?*anyopaque)callconv(.c)[*c]constu8=null,SetClipboardTextFn:?*constfn(user_data:?*anyopaque,text:[*c]constu8)callconv(.c)void=null,ClipboardUserData:?*anyopaque=null,SetPlatformImeDataFn:?*constfn(viewport:[*c]ImGuiViewport,data:[*c]ImGuiPlatformImeData)callconv(.c)void=null,_UnusedPadding:?*anyopaque=null,WantCaptureMouse:bool=false,WantCaptureKeyboard:bool=false,WantTextInput:bool=false,WantSetMousePos:bool=false,WantSaveIniSettings:bool=false,NavActive:bool=false,NavVisible:bool=false,Framerate:f32=0,MetricsRenderVertices:c_int=0,MetricsRenderIndices:c_int=0,MetricsRenderWindows:c_int=0,MetricsActiveWindows:c_int=0,MetricsActiveAllocations:c_int=0,MouseDelta:ImVec2=@import("std").mem.zeroes(ImVec2),KeyMap:[652]c_int=@import("std").mem.zeroes([652]c_int),KeysDown:[652]bool=@import("std").mem.zeroes([652]bool),NavInputs:[16]f32=@import("std").mem.zeroes([16]f32),Ctx:[*c]ImGuiContext=null,MousePos:ImVec2=@import("std").mem.zeroes(ImVec2),MouseDown:[5]bool=@import("std").mem.zeroes([5]bool),MouseWheel:f32=0,MouseWheelH:f32=0,MouseSource:ImGuiMouseSource=@import("std").mem.zeroes(ImGuiMouseSource),MouseHoveredViewport:ImGuiID=0,KeyCtrl:bool=false,KeyShift:bool=false,KeyAlt:bool=false,KeySuper:bool=false,KeyMods:ImGuiKeyChord=0,KeysData:[652]ImGuiKeyData=@import("std").mem.zeroes([652]ImGuiKeyData),WantCaptureMouseUnlessPopupClose:bool=false,MousePosPrev:ImVec2=@import("std").mem.zeroes(ImVec2),MouseClickedPos:[5]ImVec2=@import("std").mem.zeroes([5]ImVec2),MouseClickedTime:[5]f64=@import("std").mem.zeroes([5]f64),MouseClicked:[5]bool=@import("std").mem.zeroes([5]bool),MouseDoubleClicked:[5]bool=@import("std").mem.zeroes([5]bool),MouseClickedCount:[5]ImU16=@import("std").mem.zeroes([5]ImU16),MouseClickedLastCount:[5]ImU16=@import("std").mem.zeroes([5]ImU16),MouseReleased:[5]bool=@import("std").mem.zeroes([5]bool),MouseDownOwned:[5]bool=@import("std").mem.zeroes([5]bool),MouseDownOwnedUnlessPopupClose:[5]bool=@import("std").mem.zeroes([5]bool),MouseWheelRequestAxisSwap:bool=false,MouseDownDuration:[5]f32=@import("std").mem.zeroes([5]f32),MouseDownDurationPrev:[5]f32=@import("std").mem.zeroes([5]f32),MouseDragMaxDistanceAbs:[5]ImVec2=@import("std").mem.zeroes([5]ImVec2),MouseDragMaxDistanceSqr:[5]f32=@import("std").mem.zeroes([5]f32),PenPressure:f32=0,AppFocusLost:bool=false,AppAcceptingEvents:bool=false,BackendUsingLegacyKeyArrays:ImS8=0,BackendUsingLegacyNavInputArray:bool=false,InputQueueSurrogate:ImWchar16=0,InputQueueCharacters:ImVector_ImWchar=@import("std").mem.zeroes(ImVector_ImWchar),pubconstImGuiIO_AddKeyEvent=__root.ImGuiIO_AddKeyEvent;pubconstImGuiIO_AddKeyAnalogEvent=__root.ImGuiIO_AddKeyAnalogEvent;pubconstImGuiIO_AddMousePosEvent=__root.ImGuiIO_AddMousePosEvent;pubconstImGuiIO_AddMouseButtonEvent=__root.ImGuiIO_AddMouseButtonEvent;pubconstImGuiIO_AddMouseWheelEvent=__root.ImGuiIO_AddMouseWheelEvent;pubconstImGuiIO_AddMouseSourceEvent=__root.ImGuiIO_AddMouseSourceEvent;pubconstImGuiIO_AddMouseViewportEvent=__root.ImGuiIO_AddMouseViewportEvent;pubconstImGuiIO_AddFocusEvent=__root.ImGuiIO_AddFocusEvent;pubconstImGuiIO_AddInputCharacter=__root.ImGuiIO_AddInputCharacter;pubconstImGuiIO_AddInputCharacterUTF16=__root.ImGuiIO_AddInputCharacterUTF16;pubconstImGuiIO_AddInputCharactersUTF8=__root.ImGuiIO_AddInputCharactersUTF8;pubconstImGuiIO_SetKeyEventNativeData=__root.ImGuiIO_SetKeyEventNativeData;pubconstImGuiIO_SetAppAcceptingEvents=__root.ImGuiIO_SetAppAcceptingEvents;pubconstImGuiIO_ClearEventsQueue=__root.ImGuiIO_ClearEventsQueue;pubconstImGuiIO_ClearInputKeys=__root.ImGuiIO_ClearInputKeys;pubconstImGuiIO_destroy=__root.ImGuiIO_destroy;pubconstAddKeyEvent=__root.ImGuiIO_AddKeyEvent;pubconstAddKeyAnalogEvent=__root.ImGuiIO_AddKeyAnalogEvent;pubconstAddMousePosEvent=__root.ImGuiIO_AddMousePosEvent;pubconstAddMouseButtonEvent=__root.ImGuiIO_AddMouseButtonEvent;pubconstAddMouseWheelEvent=__root.ImGuiIO_AddMouseWheelEvent;pubconstAddMouseSourceEvent=__root.ImGuiIO_AddMouseSourceEvent;pubconstAddMouseViewportEvent=__root.ImGuiIO_AddMouseViewportEvent;pubconstAddFocusEvent=__root.ImGuiIO_AddFocusEvent;pubconstAddInputCharacter=__root.ImGuiIO_AddInputCharacter;pubconstAddInputCharacterUTF16=__root.ImGuiIO_AddInputCharacterUTF16;pubconstAddInputCharactersUTF8=__root.ImGuiIO_AddInputCharactersUTF8;pubconstSetKeyEventNativeData=__root.ImGuiIO_SetKeyEventNativeData;pubconstSetAppAcceptingEvents=__root.ImGuiIO_SetAppAcceptingEvents;pubconstClearEventsQueue=__root.ImGuiIO_ClearEventsQueue;pubconstClearInputKeys=__root.ImGuiIO_ClearInputKeys;pubconstdestroy=__root.ImGuiIO_destroy;};
Expected Behavior
Not fail, or print insightful error message
### Zig Version
0.16.0-dev.2915+065c6e794
### Steps to Reproduce and Observed Behavior
The compiler is segfaulting without any useful information, it simply dies. I've built the compiler in debug mode, and then ran it using the failing command to get a useful stacktrace. Sadly the project is too big to bisect to provide a minimal repro case. I hope this dump provides some clarity for those who know the compiler, if it doesn't we can close the issue.
A very important detail is that it only works targeting x86_64-linux-*. From linux only, although I can cross-compile successfully. And it ONLY fails on -Doptimize=Debug, all other release modes work.
NOTE: I've used `0.16.0-dev.2915+065c6e794` as version, but also tested with the more recent `10256e1b81a52b62581dfe643618aba8dfc64b9e`
I'm available to build and test patches.
The failing command is
```
zig build-exe .zig-cache/o/45d62dbc15a3bc0f66ef5a4cbe170620/libyoga.a .zig-cache/o/8c840c0c67a6ef6af095a0caf60031b7/libzgui.a .zig-cache/o/47106f5c9a4fe65d21b2269d2d325b06/libwgpu.a .zig-cache/o/c0475be8dc686f177f3139fc57465748/libzig-basisu.a .zig-cache/o/2a85fae3c21008389386e8a443376d67/libzstbi.a .zig-cache/o/71f5bfbb9561e267883edf25975c9b3a/libsteamworks.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -rpath \$ORIGIN --dep build_options --dep tier0 --dep ecs --dep tier1 --dep mach-glfw --dep opus --dep protobuf --dep protocol --dep server --dep shared --dep wgpu --dep steamworks --dep zaudio --dep yoga --dep zgui --dep zlm -Mroot=/home/usr/code/zt-arduz/src/client/main.zig -Mbuild_options=.zig-cache/c/461f9617a842818acaa3eb71611b96dd/options.zig --dep wgpu --dep mach-glfw -Mtier0=/home/usr/code/zt-arduz/src/tier0/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Mecs=/home/usr/code/zt-arduz/libs/zig-ecs/src/ecs.zig .zig-cache/o/2a85fae3c21008389386e8a443376d67/libzstbi.a .zig-cache/o/c0475be8dc686f177f3139fc57465748/libzig-basisu.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 -I .zig-cache/o/c5b5c75d43c5b574115b8ad1479342c1 --dep basisu --dep tier0 --dep wgpu --dep protocol --dep shared --dep zlm --dep zstbi -Mtier1=/home/usr/code/zt-arduz/src/tier1/main.zig .zig-cache/o/46d5061decb977eeb201a153cb035fff/libglfw.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/cafc87ea1c4a730e4b7d4d4058e84fd9 -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/include -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/vulkan-headers/include/vk_video -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/vulkan-headers/include/vulkan -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/GL -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/X11 -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/xcb -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers/xkbcommon -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/x11-headers -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/wayland-headers/wayland -I /home/usr/code/zt-arduz/libs/mach-glfw/glfw/wayland-headers/wayland-protocols -Mmach-glfw=/home/usr/code/zt-arduz/libs/mach-glfw/src/main.zig .zig-cache/o/be463b3b312bc7d18ae3199fab51ec48/libopusfile.a .zig-cache/o/299008c332824a16ac8938203ee8659d/libopusenc.a -I .zig-cache/o/f22d7316f1b5f2ae8fb9d878831b460e -I .zig-cache/o/403429ff5ea0921584dfc7a1597eb86b -D_FORTIFY_SOURCE=0 -Mopus=/home/usr/code/zt-arduz/libs/mach-opus/src/lib.zig -Mprotobuf=/home/usr/code/zt-arduz/zig-pkg/protobuf-3.0.0-0e82amqTKAAp7pNyUmCcPa1CTAimGps-WPcot4Ipc-d4/src/protobuf.zig --dep protobuf -Mprotocol=/home/usr/code/zt-arduz/src/protocol/arduz.pb.zig -ODebug -target x86_64-linux-gnu -mcpu baseline --dep ecs --dep zlm --dep protocol --dep steamworks --dep shared --dep protobuf -Mserver=/home/usr/code/zt-arduz/src/server/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline --dep zlm --dep ecs --dep protocol --dep steamworks --dep build_options -Mshared=/home/usr/code/zt-arduz/src/shared/main.zig -lwgpu_native -ODebug -target x86_64-linux-gnu -mcpu baseline -L /home/usr/code/zt-arduz/zig-pkg/N-V-__8AAIKoTRXldpH5qBKlXug1Vt2WJ7qWiFm5RLAKkQww/lib -Mwgpu=/home/usr/code/zt-arduz/libs/wgpu/src/wgpu.zig -search_paths_first_static -needed-lsdkencryptedappticket -needed-lsteam_api -cflags -Wno-return-type-c-linkage -fno-sanitize=undefined -Wgnu-alignof-expression -Wno-gnu -- /home/usr/code/zt-arduz/libs/zig-steamworks/src/steam.cpp -ODebug -target x86_64-linux-gnu -mcpu baseline -I /home/usr/code/zt-arduz/libs/zig-steamworks/steamworks/public/steam -L /home/usr/code/zt-arduz/libs/zig-steamworks/steamworks/public/steam/lib/linux64 -L /home/usr/code/zt-arduz/libs/zig-steamworks/steamworks/redistributable_bin/linux64 -Msteamworks=/home/usr/code/zt-arduz/libs/zig-steamworks/src/main.zig -cflags -std=c99 -- /home/usr/code/zt-arduz/libs/zaudio/src/zaudio.c -cflags -DMA_NO_WEBAUDIO -DMA_NO_ENCODING -DMA_NO_NULL -DMA_NO_JACK -DMA_NO_DSOUND -DMA_NO_WINMM -std=c99 -fno-sanitize=undefined -- /home/usr/code/zt-arduz/libs/zaudio/libs/miniaudio/miniaudio.c -ODebug -target x86_64-linux-gnu -mcpu baseline -I /home/usr/code/zt-arduz/libs/zaudio/libs/miniaudio -Mzaudio=/home/usr/code/zt-arduz/libs/zaudio/src/zaudio.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Myoga=.zig-cache/o/439f1b3e8029f6e564e93333b1421f79/Yoga.zig -ODebug -target x86_64-linux-gnu -mcpu baseline --dep zlm --dep mach-glfw -Mzgui=/home/usr/code/zt-arduz/libs/zgui/src/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Mzlm=/home/usr/code/zt-arduz/libs/zlm/src/zlm.zig -cflags -- /home/usr/code/zt-arduz/libs/zig-basisu/src/encoder/wrapper.cpp /home/usr/code/zt-arduz/libs/zig-basisu/src/transcoder/wrapper.cpp .zig-cache/o/2f4c59b306057af15486fa9518c14099/libbasisu.a -ODebug -target x86_64-linux-gnu -mcpu baseline -I .zig-cache/o/95ccdd123f6da826a5b5760d4320d656 -Mbasisu=/home/usr/code/zt-arduz/libs/zig-basisu/src/main.zig -ODebug -target x86_64-linux-gnu -mcpu baseline -Mzstbi=/home/usr/code/zt-arduz/libs/zstbi/src/zstbi.zig .zig-cache/o/46d5061decb977eeb201a153cb035fff/libglfw.a .zig-cache/o/2f4c59b306057af15486fa9518c14099/libbasisu.a .zig-cache/o/eac4e016153a82eb5b161034c9672ca9/libopus.a .zig-cache/o/e52ac754403eac130f9a84dca17c78d9/libogg.a .zig-cache/o/eac4e016153a82eb5b161034c9672ca9/libopus.a -lc++ -lc --cache-dir .zig-cache --global-cache-dir /home/usr/.cache/zig --name arduz-linux --zig-lib-dir /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/
```
And the hopefully insightful output is
```
Compiler crash context:
Analyzing '/nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig'
%1250 = dbg_stmt(21, 17)
%1251 = block_comptime(reason=type, {
%1252 = break_inline(%1251, %1192)
})
%1253 = alloc_mut(%1251)
%1254 = store_node(%1253, @undef)
%1255 = dbg_var_ptr(%1253, "item")
%1256 = dbg_stmt(22, 17)
%1257 = decl_val("asBytes")
%1258 = dbg_stmt(22, 32)
%1259 = call(.auto, %1257, [
{
%1260 = validate_ref_ty(%1259)
%1261 = break_inline(%1259, %1253)
},
])
%1262 = typeof(%1259)
%1263 = indexable_ptr_elem_type(%1262)
> %1264 = memset(%1259, @zero)
%1265 = dbg_stmt(23, 17)
%1266 = load(%1253)
%1267 = dbg_stmt(23, 17)
%1268 = restore_err_ret_index_fn_entry(%1266)
%1269 = ret_node(%1266)
For full context, use the command
/home/usr/code/zt-arduz/zig/bin/zig ast-check -t /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
in /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
> %1248 = condbr(%1247, {%1250..%1269}, {%1270..%1322})
in /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
> %1249 = block({%1244..%1248})
in /nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/mem.zig
> %1199 = switch_block(%1197,
".enum" => {%1207..%1215},
".void" => {%1216..%1222},
".bool" => {%1223..%1225},
by_val=%1199 ".struct" => {%1243..%1324},
by_val=%1199 ".pointer" => {%1327..%1391},
by_val=%1199 ".array" => {%1398..%1406},
by_val=%1199 ".vector" => {%1413..%1421},
by_val=%1199 ".union" => {%1424..%1461},
".comptime_int", ".int", ".comptime_float", ".float" => {%1200..%1206},
".optional", ".null" => {%1226..%1228},
".enum_literal", ".error_union", ".error_set", ".fn", ".type", ".noreturn", ".undefined", ".opaque", ".frame", ".anyframe" => {%1462..%1470})
in libs/zgui/src/cimgui.zig
> %11847 = field_call(.auto, %11845, "zeroes", [
{%11848, %11849},
])
thread 535573 panic: index out of bounds: index 3, len 3
/home/usr/code/zig/src/Sema/bitcast.zig:742:53: 0x4310840 in prepareBits (main.zig)
bits += Value.fromInterned(pack.unpacked[len]).typeOf(pt.zcu).bitSize(zcu);
^
/home/usr/code/zig/src/Sema/bitcast.zig:670:29: 0x4310658 in padding (main.zig)
_ = pack.prepareBits(pad_bits);
^
/home/usr/code/zig/src/Sema/bitcast.zig:537:49: 0x430d6c5 in get (main.zig)
try pack.padding(want_bit_off - cur_bit_off);
^
/home/usr/code/zig/src/Sema/bitcast.zig:514:62: 0x430cf5c in get (main.zig)
elems[@intCast(real_idx)] = (try pack.get(elem_ty)).toIntern();
^
/home/usr/code/zig/src/Sema/bitcast.zig:539:65: 0x430d80a in get (main.zig)
elems[field_idx] = (try pack.get(field_ty)).toIntern();
^
/home/usr/code/zig/src/Sema/bitcast.zig:206:20: 0x430bb51 in bitCastSpliceInner (main.zig)
return pack.get(val_ty);
^
/home/usr/code/zig/src/Sema/bitcast.zig:54:30: 0x4308c72 in bitCastSplice (main.zig)
return bitCastSpliceInner(sema, val, splice_val, byte_offset, host_bits, bit_offset) catch |err| switch (err) {
^
/home/usr/code/zig/src/Sema/comptime_ptr_access.zig:192:46: 0x42fa0ee in storeComptimePtr (main.zig)
const new_val = try sema.bitCastSpliceVal(
^
/home/usr/code/zig/src/Sema.zig:29323:38: 0x42fb3c0 in storePtrVal (main.zig)
switch (try sema.storeComptimePtr(block, src, coerced_ptr_val, coerced_operand_val)) {
^
/home/usr/code/zig/src/Sema.zig:24380:32: 0x4359571 in zirMemset (main.zig)
return sema.storePtrVal(block, src, array_ptr_val, array_val, array_ty);
^
/home/usr/code/zig/src/Sema.zig:1641:35: 0x42dc698 in analyzeBodyInner (main.zig)
try sema.zirMemset(block, inst);
^
/home/usr/code/zig/src/Sema.zig:1072:30: 0x4331542 in analyzeInlineBody (main.zig)
if (sema.analyzeBodyInner(block, body)) {
^
/home/usr/code/zig/src/Sema.zig:1916:58: 0x42e02d1 in analyzeBodyInner (main.zig)
const result = try sema.analyzeInlineBody(block, inline_body, inst) orelse break;
^
/home/usr/code/zig/src/Sema.zig:1819:81: 0x42dec88 in analyzeBodyInner (main.zig)
const break_result: ?BreakResult = if (sema.analyzeBodyInner(&child_block, inline_body)) r: {
^
/home/usr/code/zig/src/Sema.zig:1072:30: 0x4331542 in analyzeInlineBody (main.zig)
if (sema.analyzeBodyInner(block, body)) {
^
/home/usr/code/zig/src/Sema.zig:1105:39: 0x49560b2 in resolveInlineBody (main.zig)
return (try sema.analyzeInlineBody(block, body, break_target)) orelse .unreachable_value;
^
/home/usr/code/zig/src/Sema.zig:5418:38: 0x433e69c in resolveBlockBody (main.zig)
return sema.resolveInlineBody(child_block, body, body_inst);
^
/home/usr/code/zig/src/Sema.zig:12055:33: 0x47dd089 in resolveSwitchProng (main.zig)
return sema.resolveBlockBody(block, src, child_block, prong_body, switch_inst, merges);
^
/home/usr/code/zig/src/Sema.zig:11829:47: 0x47d98ac in resolveSwitchBlock (main.zig)
return sema.resolveSwitchProng(
^
/home/usr/code/zig/src/Sema.zig:10281:40: 0x476bf99 in analyzeSwitchBlock (main.zig)
if (sema.resolveSwitchBlock(
^
/home/usr/code/zig/src/Sema.zig:10173:50: 0x476a6f4 in zirSwitchBlock (main.zig)
const maybe_ref = try sema.analyzeSwitchBlock(block, &child_block, raw_operand, operand_is_ref, merges, inst, &zir_switch, &validated_switch);
^
/home/usr/code/zig/src/Sema.zig:1261:69: 0x42d2172 in analyzeBodyInner (main.zig)
.switch_block => try sema.zirSwitchBlock(block, inst, false),
^
/home/usr/code/zig/src/Sema.zig:1054:26: 0x42742c1 in analyzeFnBody (main.zig)
sema.analyzeBodyInner(block, body) catch |err| switch (err) {
^
/home/usr/code/zig/src/Sema.zig:7457:27: 0x4282e1b in analyzeCall (main.zig)
sema.analyzeFnBody(&child_block, fn_zir_info.body) catch |err| switch (err) {
^
/home/usr/code/zig/src/Sema.zig:6357:43: 0x48809de in zirCall__anon_1419606 (main.zig)
const call_inst = try sema.analyzeCall(block, func, func_ty, callee_src, call_src, modifier, ensure_result_used, args_info, call_dbg_node, .call);
^
/home/usr/code/zig/src/Sema.zig:1194:62: 0x42cedb0 in analyzeBodyInner (main.zig)
.field_call => try sema.zirCall(block, inst, .field),
^
/home/usr/code/zig/src/Sema.zig:1072:30: 0x4331542 in analyzeInlineBody (main.zig)
if (sema.analyzeBodyInner(block, body)) {
^
/home/usr/code/zig/src/Sema.zig:1105:39: 0x49560b2 in resolveInlineBody (main.zig)
return (try sema.analyzeInlineBody(block, body, break_target)) orelse .unreachable_value;
^
/home/usr/code/zig/src/Sema/type_resolution.zig:637:50: 0x5edeeae in resolveStructDefaultsInner (main.zig)
break :ref try sema.resolveInlineBody(block, default_body, zir_index);
^
/home/usr/code/zig/src/Sema/type_resolution.zig:591:38: 0x5eddeb3 in resolveStructDefaults (main.zig)
return resolveStructDefaultsInner(sema, &block, &struct_obj, .normal_fields);
^
/home/usr/code/zig/src/Zcu/PerThread.zig:1533:76: 0x5edbda5 in ensureStructDefaultsUpToDate (main.zig)
const new_failed: bool = if (Sema.type_resolution.resolveStructDefaults(&sema, ty)) failed: {
^
/home/usr/code/zig/src/Zcu/PerThread.zig:336:59: 0x40f3685 in update (main.zig)
break :res pt.ensureStructDefaultsUpToDate(.fromInterned(ty), null);
^
/home/usr/code/zig/src/Compilation.zig:4516:22: 0x3c9a35d in performAllTheWork (main.zig)
try pt.update(main_progress_node, &decl_work_timer);
^
/home/usr/code/zig/src/Compilation.zig:3085:31: 0x2500239 in update (main.zig)
try comp.performAllTheWork(main_progress_node, arena);
^
/home/usr/code/zig/src/main.zig:4671:20: 0x24a15bb in updateModule (main.zig)
try comp.update(prog_node);
^
/home/usr/code/zig/src/main.zig:3767:21: 0x1b52a61 in buildOutputType (main.zig)
updateModule(comp, color, root_prog_node) catch |err| switch (err) {
^
/home/usr/code/zig/src/main.zig:282:31: 0x1b9e1d3 in mainArgs (main.zig)
return buildOutputType(gpa, arena, io, args, .{ .build = .Exe }, environ_map);
^
/home/usr/code/zig/src/main.zig:235:20: 0x1af9c84 in main (main.zig)
return mainArgs(gpa, arena, io, args, &environ_map);
^
/nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/start.zig:678:88: 0x1af87d1 in callMain (std.zig)
if (fn_info.params[0].type.? == std.process.Init.Minimal) return wrapMain(root.main(.{
^
/nix/store/9j6bvhl2alvh6fck0q4jnjkyxmhp0y3y-zig-0.16.0-dev.2915+065c6e794/lib/std/start.zig:190:5: 0x1af81d1 in _start (std.zig)
asm volatile (switch (native_arch) {
^
[25972/25972] Linking
Thread 1 "zig" received signal SIGABRT, Aborted.
0x0000000001877b2b in os.linux.x86_64.syscall4 (number=rt_sigprocmask, arg1=2, arg2=わ140737487928048, arg3=0, arg4=8)
(gdb) gui.struct_ImGuiContext
```
The failing AST is
```
IO: {
%11129 = decl_val("ImGuiIO") token_offset:2672:9 to :2672:16
%11130 = break_inline(%11124, %11129)
} = {
%11131 = import(.none, "std") token_offset:2672:27 to :2672:32
%11132 = ref(%11131) token_offset:2672:19 to :2672:26
%11133 = field_ptr(%11132, "mem") node_offset:2672:19 to :2672:37
%11134 = dbg_stmt(4, 44)
> %11135 = field_call(.auto, %11133, "zeroes", [
{
%11136 = decl_val("ImGuiIO") token_offset:2672:45 to :2672:52
%11137 = break_inline(%11135, %11136)
},
]) node_offset:2672:19 to :2672:53
%11138 = break_inline(%11124, %11135)
},
```
It corresponds to the zig translate-c code of Dear ImGui. Sadly a trivial application does not fail to compile, I couldn't isolate a repro case.
```zig
// ...
pub const ImGuiStackTool = struct_ImGuiStackTool;
pub const struct_ImGuiContext = extern struct {
Initialized: bool = false,
FontAtlasOwnedByContext: bool = false,
IO: ImGuiIO = @import("std").mem.zeroes(ImGuiIO), // <<<<<<<<<<<<<<<<<<<<<<<<
PlatformIO: ImGuiPlatformIO = @import("std").mem.zeroes(ImGuiPlatformIO),
Style: ImGuiStyle = @import("std").mem.zeroes(ImGuiStyle),
ConfigFlagsCurrFrame: ImGuiConfigFlags = 0,
// ...
}
// ...
pub const struct_ImGuiIO = extern struct {
ConfigFlags: ImGuiConfigFlags = 0,
BackendFlags: ImGuiBackendFlags = 0,
DisplaySize: ImVec2 = @import("std").mem.zeroes(ImVec2),
DeltaTime: f32 = 0,
IniSavingRate: f32 = 0,
IniFilename: [*c]const u8 = null,
LogFilename: [*c]const u8 = null,
UserData: ?*anyopaque = null,
Fonts: [*c]ImFontAtlas = null,
FontGlobalScale: f32 = 0,
FontAllowUserScaling: bool = false,
FontDefault: [*c]ImFont = null,
DisplayFramebufferScale: ImVec2 = @import("std").mem.zeroes(ImVec2),
ConfigDockingNoSplit: bool = false,
ConfigDockingWithShift: bool = false,
ConfigDockingAlwaysTabBar: bool = false,
ConfigDockingTransparentPayload: bool = false,
ConfigViewportsNoAutoMerge: bool = false,
ConfigViewportsNoTaskBarIcon: bool = false,
ConfigViewportsNoDecoration: bool = false,
ConfigViewportsNoDefaultParent: bool = false,
MouseDrawCursor: bool = false,
ConfigMacOSXBehaviors: bool = false,
ConfigInputTrickleEventQueue: bool = false,
ConfigInputTextCursorBlink: bool = false,
ConfigInputTextEnterKeepActive: bool = false,
ConfigDragClickToInputText: bool = false,
ConfigWindowsResizeFromEdges: bool = false,
ConfigWindowsMoveFromTitleBarOnly: bool = false,
ConfigMemoryCompactTimer: f32 = 0,
MouseDoubleClickTime: f32 = 0,
MouseDoubleClickMaxDist: f32 = 0,
MouseDragThreshold: f32 = 0,
KeyRepeatDelay: f32 = 0,
KeyRepeatRate: f32 = 0,
ConfigDebugBeginReturnValueOnce: bool = false,
ConfigDebugBeginReturnValueLoop: bool = false,
ConfigDebugIgnoreFocusLoss: bool = false,
ConfigDebugIniSettings: bool = false,
BackendPlatformName: [*c]const u8 = null,
BackendRendererName: [*c]const u8 = null,
BackendPlatformUserData: ?*anyopaque = null,
BackendRendererUserData: ?*anyopaque = null,
BackendLanguageUserData: ?*anyopaque = null,
GetClipboardTextFn: ?*const fn (user_data: ?*anyopaque) callconv(.c) [*c]const u8 = null,
SetClipboardTextFn: ?*const fn (user_data: ?*anyopaque, text: [*c]const u8) callconv(.c) void = null,
ClipboardUserData: ?*anyopaque = null,
SetPlatformImeDataFn: ?*const fn (viewport: [*c]ImGuiViewport, data: [*c]ImGuiPlatformImeData) callconv(.c) void = null,
_UnusedPadding: ?*anyopaque = null,
WantCaptureMouse: bool = false,
WantCaptureKeyboard: bool = false,
WantTextInput: bool = false,
WantSetMousePos: bool = false,
WantSaveIniSettings: bool = false,
NavActive: bool = false,
NavVisible: bool = false,
Framerate: f32 = 0,
MetricsRenderVertices: c_int = 0,
MetricsRenderIndices: c_int = 0,
MetricsRenderWindows: c_int = 0,
MetricsActiveWindows: c_int = 0,
MetricsActiveAllocations: c_int = 0,
MouseDelta: ImVec2 = @import("std").mem.zeroes(ImVec2),
KeyMap: [652]c_int = @import("std").mem.zeroes([652]c_int),
KeysDown: [652]bool = @import("std").mem.zeroes([652]bool),
NavInputs: [16]f32 = @import("std").mem.zeroes([16]f32),
Ctx: [*c]ImGuiContext = null,
MousePos: ImVec2 = @import("std").mem.zeroes(ImVec2),
MouseDown: [5]bool = @import("std").mem.zeroes([5]bool),
MouseWheel: f32 = 0,
MouseWheelH: f32 = 0,
MouseSource: ImGuiMouseSource = @import("std").mem.zeroes(ImGuiMouseSource),
MouseHoveredViewport: ImGuiID = 0,
KeyCtrl: bool = false,
KeyShift: bool = false,
KeyAlt: bool = false,
KeySuper: bool = false,
KeyMods: ImGuiKeyChord = 0,
KeysData: [652]ImGuiKeyData = @import("std").mem.zeroes([652]ImGuiKeyData),
WantCaptureMouseUnlessPopupClose: bool = false,
MousePosPrev: ImVec2 = @import("std").mem.zeroes(ImVec2),
MouseClickedPos: [5]ImVec2 = @import("std").mem.zeroes([5]ImVec2),
MouseClickedTime: [5]f64 = @import("std").mem.zeroes([5]f64),
MouseClicked: [5]bool = @import("std").mem.zeroes([5]bool),
MouseDoubleClicked: [5]bool = @import("std").mem.zeroes([5]bool),
MouseClickedCount: [5]ImU16 = @import("std").mem.zeroes([5]ImU16),
MouseClickedLastCount: [5]ImU16 = @import("std").mem.zeroes([5]ImU16),
MouseReleased: [5]bool = @import("std").mem.zeroes([5]bool),
MouseDownOwned: [5]bool = @import("std").mem.zeroes([5]bool),
MouseDownOwnedUnlessPopupClose: [5]bool = @import("std").mem.zeroes([5]bool),
MouseWheelRequestAxisSwap: bool = false,
MouseDownDuration: [5]f32 = @import("std").mem.zeroes([5]f32),
MouseDownDurationPrev: [5]f32 = @import("std").mem.zeroes([5]f32),
MouseDragMaxDistanceAbs: [5]ImVec2 = @import("std").mem.zeroes([5]ImVec2),
MouseDragMaxDistanceSqr: [5]f32 = @import("std").mem.zeroes([5]f32),
PenPressure: f32 = 0,
AppFocusLost: bool = false,
AppAcceptingEvents: bool = false,
BackendUsingLegacyKeyArrays: ImS8 = 0,
BackendUsingLegacyNavInputArray: bool = false,
InputQueueSurrogate: ImWchar16 = 0,
InputQueueCharacters: ImVector_ImWchar = @import("std").mem.zeroes(ImVector_ImWchar),
pub const ImGuiIO_AddKeyEvent = __root.ImGuiIO_AddKeyEvent;
pub const ImGuiIO_AddKeyAnalogEvent = __root.ImGuiIO_AddKeyAnalogEvent;
pub const ImGuiIO_AddMousePosEvent = __root.ImGuiIO_AddMousePosEvent;
pub const ImGuiIO_AddMouseButtonEvent = __root.ImGuiIO_AddMouseButtonEvent;
pub const ImGuiIO_AddMouseWheelEvent = __root.ImGuiIO_AddMouseWheelEvent;
pub const ImGuiIO_AddMouseSourceEvent = __root.ImGuiIO_AddMouseSourceEvent;
pub const ImGuiIO_AddMouseViewportEvent = __root.ImGuiIO_AddMouseViewportEvent;
pub const ImGuiIO_AddFocusEvent = __root.ImGuiIO_AddFocusEvent;
pub const ImGuiIO_AddInputCharacter = __root.ImGuiIO_AddInputCharacter;
pub const ImGuiIO_AddInputCharacterUTF16 = __root.ImGuiIO_AddInputCharacterUTF16;
pub const ImGuiIO_AddInputCharactersUTF8 = __root.ImGuiIO_AddInputCharactersUTF8;
pub const ImGuiIO_SetKeyEventNativeData = __root.ImGuiIO_SetKeyEventNativeData;
pub const ImGuiIO_SetAppAcceptingEvents = __root.ImGuiIO_SetAppAcceptingEvents;
pub const ImGuiIO_ClearEventsQueue = __root.ImGuiIO_ClearEventsQueue;
pub const ImGuiIO_ClearInputKeys = __root.ImGuiIO_ClearInputKeys;
pub const ImGuiIO_destroy = __root.ImGuiIO_destroy;
pub const AddKeyEvent = __root.ImGuiIO_AddKeyEvent;
pub const AddKeyAnalogEvent = __root.ImGuiIO_AddKeyAnalogEvent;
pub const AddMousePosEvent = __root.ImGuiIO_AddMousePosEvent;
pub const AddMouseButtonEvent = __root.ImGuiIO_AddMouseButtonEvent;
pub const AddMouseWheelEvent = __root.ImGuiIO_AddMouseWheelEvent;
pub const AddMouseSourceEvent = __root.ImGuiIO_AddMouseSourceEvent;
pub const AddMouseViewportEvent = __root.ImGuiIO_AddMouseViewportEvent;
pub const AddFocusEvent = __root.ImGuiIO_AddFocusEvent;
pub const AddInputCharacter = __root.ImGuiIO_AddInputCharacter;
pub const AddInputCharacterUTF16 = __root.ImGuiIO_AddInputCharacterUTF16;
pub const AddInputCharactersUTF8 = __root.ImGuiIO_AddInputCharactersUTF8;
pub const SetKeyEventNativeData = __root.ImGuiIO_SetKeyEventNativeData;
pub const SetAppAcceptingEvents = __root.ImGuiIO_SetAppAcceptingEvents;
pub const ClearEventsQueue = __root.ImGuiIO_ClearEventsQueue;
pub const ClearInputKeys = __root.ImGuiIO_ClearInputKeys;
pub const destroy = __root.ImGuiIO_destroy;
};
```
### Expected Behavior
Not fail, or print insightful error message