stage3: debug info broken and wrong source locations
Zig Version
0.10.0-dev.4443+71f876295
Steps to Reproduce
const std = @import("std");
fn foo(comptime src: struct{}) void {
_ = src;
}
pub fn main() void {
foo(@src());
}
Expected Behavior
[meghan@nixos:~/src/zig]$ ./build/zig2 run test.zig
thread 3277 panic: reached unreachable code
/home/meghan/src/zig/src/value.zig:2558:21: 0x15be91e in value.Value.hashPtr (zig2)
else => unreachable,
^
/home/meghan/src/zig/src/value.zig:2328:39: 0x135e411 in value.Value.hash (zig2)
else => return hashPtr(val, hasher, mod.getTarget()),
^
/home/meghan/src/zig/src/value.zig:2347:43: 0x135e5dd in value.Value.hash (zig2)
field_val.hash(field_ty, hasher, mod);
^
/home/meghan/src/zig/src/Sema.zig:6602:29: 0x11ed6a7 in Sema.instantiateGenericCall (zig2)
arg_val.hash(arg_ty, &hasher, mod);
^
/home/meghan/src/zig/src/Sema.zig:5981:40: 0xfe1fdf in Sema.analyzeCall (zig2)
if (sema.instantiateGenericCall(
^
/home/meghan/src/zig/src/Sema.zig:5773:28: 0xd41c2c in Sema.zirCall (zig2)
return sema.analyzeCall(block, func, func_src, call_src, modifier, ensure_result_used, resolved_args, bound_arg_src);
^
/home/meghan/src/zig/src/Sema.zig:745:62: 0xb9b3b5 in Sema.analyzeBodyInner (zig2)
.call => try sema.zirCall(block, inst),
^
/home/meghan/src/zig/src/Sema.zig:629:30: 0xb8ee5a in Sema.analyzeBody (zig2)
_ = sema.analyzeBodyInner(block, body) catch |err| switch (err) {
^
/home/meghan/src/zig/src/Module.zig:5607:21: 0x98fbad in Module.analyzeFnBody (zig2)
sema.analyzeBody(&inner_block, fn_info.body) catch |err| switch (err) {
^
/home/meghan/src/zig/src/Module.zig:4300:40: 0x97037a in Module.ensureFuncBodyAnalyzed (zig2)
var air = mod.analyzeFnBody(func, sema_arena) catch |err| switch (err) {
^
/home/meghan/src/zig/src/Compilation.zig:3047:42: 0x65c0ec in Compilation.processOneJob (zig2)
module.ensureFuncBodyAnalyzed(func) catch |err| switch (err) {
^
/home/meghan/src/zig/src/Compilation.zig:2985:30: 0x649e3f in Compilation.performAllTheWork (zig2)
try processOneJob(comp, work_item);
^
/home/meghan/src/zig/src/Compilation.zig:2325:31: 0x6424ed in Compilation.update (zig2)
try comp.performAllTheWork(main_progress_node);
^
/home/meghan/src/zig/src/main.zig:3319:20: 0x5cda1f in main.updateModule (zig2)
try comp.update();
^
/home/meghan/src/zig/src/main.zig:3004:17: 0x5172cc in main.buildOutputType (zig2)
updateModule(gpa, comp, hook) catch |err| switch (err) {
^
/home/meghan/src/zig/src/main.zig:238:31: 0x4affbf in main.mainArgs (zig2)
return buildOutputType(gpa, arena, args, .run);
^
/home/meghan/src/zig/src/stage1.zig:56:24: 0x4af635 in main (zig2)
stage2.mainArgs(gpa, arena, args) catch unreachable;
^
???:?:?: 0x7f1c2acff236 in ??? (???)
???:?:?: 0x7ffe047cd3d9 in ??? (???)
Aborted (core dumped)
Actual Behavior
[meghan@nixos:~/src/zig]$ ./build/stage3/bin/zig run test.zig
thread 3154 panic: reached unreachable code
???:?:?: 0x1bf63b5 in hashPtr (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a4d7e5 in hash (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a4ce73 in hash (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x212dd1a in instantiateGenericCall (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1eeba7a in analyzeCall (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1c26afc in zirCall (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a77f10 in analyzeBodyInner (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a76488 in analyzeBody (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x18a2c7a in analyzeFnBody (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x16ae2b8 in ensureFuncBodyAnalyzed (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x16ac733 in processOneJob (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1579daa in performAllTheWork (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x15765cb in update (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1583e66 in updateModule (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1304d33 in buildOutputType (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x12e2efa in mainArgs (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x15d0d67 in main (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x7fea19f79236 in ??? (???)
???:?:?: 0x7fff2cda53c5 in ??? (???)
Aborted (core dumped)
This is a regression, correct? Are you willing to bisect?
went all the way back to https://github.com/ziglang/zig/commit/716d9237cb757c15217b21964fde8e755aabe853 (Sep 13) looking for a 'good' commit to start the bisect from and it gave the same result
https://github.com/ziglang/zig/issues/12739 shows the stack trace pattern arising even earlier on at least Sep 4, not sure how far this goes back
the fact line info is gone but every file points to /zig/src/zig_llvm.cpp is certainly an odd side effect of whatever lies at the bottom of this
Note that the stacktrace appears to be broken (these functions don't live in
zig_llvm.cpp), running zig in gdb I get this:
oh even more interesting...
edit: can confirm gdb is able to obtain correct info
(gdb) r run ../test.zig
Starting program: /home/meghan/src/zig/build/stage3/bin/zig run ../test.zig
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/nix/store/scd5n7xsn0hh0lvhhnycr9gx0h8xfzsl-glibc-2.34-210/lib/libthread_db.so.1".
thread 66720 panic: reached unreachable code
???:?:?: 0x1be86e5 in hashPtr (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a3f985 in hash (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a3f013 in hash (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x21083fa in instantiateGenericCall (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1ece5fa in analyzeCall (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1c1851c in zirCall (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a6a980 in analyzeBodyInner (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1a68ef8 in analyzeBody (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x18880fa in analyzeFnBody (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x166e7a8 in ensureFuncBodyAnalyzed (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x166cc33 in processOneJob (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x154c60a in performAllTheWork (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1548e2b in update (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1571816 in updateModule (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x1304d4a in buildOutputType (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x12e2e8a in mainArgs (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x15d0e17 in main (/home/meghan/src/zig/src/zig_llvm.cpp)
???:?:?: 0x7fffeb342236 in ??? (???)
???:?:?: 0x7fffffffac3a in ??? (???)
Thread 1 "zig" received signal SIGABRT, Aborted.
0x00007fffeb3a0c1f in __pthread_kill_implementation () from /nix/store/scd5n7xsn0hh0lvhhnycr9gx0h8xfzsl-glibc-2.34-210/lib/libc.so.6
(gdb) bt
#0 0x00007fffeb3a0c1f in __pthread_kill_implementation () from /nix/store/scd5n7xsn0hh0lvhhnycr9gx0h8xfzsl-glibc-2.34-210/lib/libc.so.6
#1 0x00007fffeb356042 in raise () from /nix/store/scd5n7xsn0hh0lvhhnycr9gx0h8xfzsl-glibc-2.34-210/lib/libc.so.6
#2 0x00007fffeb34149c in abort () from /nix/store/scd5n7xsn0hh0lvhhnycr9gx0h8xfzsl-glibc-2.34-210/lib/libc.so.6
#3 0x00000000014046d9 in os.abort () at /home/meghan/src/zig/lib/std/os.zig:508
#4 0x00000000015d6082 in debug.panicImpl () at /home/meghan/src/zig/lib/std/debug.zig:393
#5 0x00000000012e04f4 in builtin.default_panic () at /home/meghan/src/zig/lib/std/builtin.zig:839
#6 0x0000000001be86e6 in value.Value.hashPtr () at value.zig:2635
#7 0x0000000001a3f986 in value.Value.hash () at value.zig:2405
#8 0x0000000001a3f014 in value.Value.hash () at value.zig:2424
#9 0x00000000021083fb in Sema.instantiateGenericCall () at Sema.zig:6602
#10 0x0000000001ece5fb in Sema.analyzeCall () at Sema.zig:5981
#11 0x0000000001c1851d in Sema.zirCall () at Sema.zig:5773
#12 0x0000000001a6a981 in Sema.analyzeBodyInner () at Sema.zig:745
#13 0x0000000001a68ef9 in Sema.analyzeBody () at Sema.zig:629
#14 0x00000000018880fb in Module.analyzeFnBody () at Module.zig:5602
#15 0x000000000166e7a9 in Module.ensureFuncBodyAnalyzed () at Module.zig:4300
#16 0x000000000166cc34 in Compilation.processOneJob () at Compilation.zig:3047
#17 0x000000000154c60b in Compilation.performAllTheWork () at Compilation.zig:2985
#18 0x0000000001548e2c in Compilation.update () at Compilation.zig:2325
#19 0x0000000001571817 in main.updateModule () at main.zig:3323
#20 0x0000000001304d4b in main.buildOutputType () at main.zig:3008
#21 0x00000000012e2e8b in main.mainArgs () at main.zig:238
#22 0x00000000015d0e18 in main () at stage1.zig:56
one of the frames of https://github.com/ziglang/zig/issues/11504 (Apr 23) exhibits this pattern as well
It's also super broken on Windows where it won't even display function names. Currently taking part in a gamejam, but I'll have a closer look after Nov 1 if no one else has figured it out by then. Similarly, WinDbg can get backtraces just fine.
Running from command line:
>.\zig-out\bin\jam2.exe
thread 10056 panic: integer overflow
???:?:?: 0x7ff6393ee2f0 in ??? (???)
???:?:?: 0x7ff6393ee0cf in ??? (???)
???:?:?: 0x7ff6393ee733 in ??? (???)
???:?:?: 0x7ff639519025 in ??? (???)
???:?:?: 0x7ff63951907b in ??? (???)
???:?:?: 0x7ffbaa4c7033 in ??? (???)
???:?:?: 0x7ffbab302650 in ??? (???)
WinDbg:
0:000> K
# Child-SP RetAddr Call Site
00 000000cf`0ebff3f0 00007ff6`393eee40 jam2!abort+0xa [D:\Scratch\zig-install\lib\zig\std\os.zig @ 453]
01 000000cf`0ebff420 00007ff6`393e0ae7 jam2!panicImpl+0x260 [D:\Scratch\zig-install\lib\zig\std\debug.zig @ 393]
02 000000cf`0ebff610 00007ff6`393ee2f1 jam2!default_panic+0x57 [D:\Scratch\zig-install\lib\zig\std\builtin.zig @ 839]
03 000000cf`0ebff680 00007ff6`393ee0d0 jam2!run+0x61 [D:\Dev\Projects\jam2\src\Game.zig @ 148]
04 000000cf`0ebff770 00007ff6`393ee734 jam2!main+0xc0 [D:\Dev\Projects\jam2\src\main.zig @ 10]
05 (Inline Function) --------`-------- jam2!callMain+0x9 [D:\Scratch\zig-install\lib\zig\std\start.zig @ 578]
06 (Inline Function) --------`-------- jam2!initEventLoopAndCallMain+0x9 [D:\Scratch\zig-install\lib\zig\std\start.zig @ 512]
07 (Inline Function) --------`-------- jam2!callMainWithArgs+0x5c [D:\Scratch\zig-install\lib\zig\std\start.zig @ 462]
08 000000cf`0ebff880 00007ff6`39519026 jam2!main+0x1b4 [D:\Scratch\zig-install\lib\zig\std\start.zig @ 477]
09 000000cf`0ebffaa0 00007ff6`3951907c jam2!WinMainCRTStartup+0x2c6
0a 000000cf`0ebffb60 00007ffb`aa4c7034 jam2!mainCRTStartup+0x1c
0b 000000cf`0ebffb90 00007ffb`ab302651 KERNEL32!BaseThreadInitThunk+0x14
0c 000000cf`0ebffbc0 00000000`00000000 ntdll!RtlUserThreadStart+0x21
EDIT: Looks like this may already be addressed on windows with #12740
got a stack trace in this pattern again but this time gdb failed too
(gdb) bt
No stack.
Closing as presumed fixed, if you find a new repro post it here and I'll reopen.