zig icon indicating copy to clipboard operation
zig copied to clipboard

stage3: debug info broken and wrong source locations

Open nektro opened this issue 3 years ago • 7 comments

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)

nektro avatar Oct 18 '22 22:10 nektro

This is a regression, correct? Are you willing to bisect?

andrewrk avatar Oct 18 '22 22:10 andrewrk

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

nektro avatar Oct 18 '22 23:10 nektro

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

nektro avatar Oct 18 '22 23:10 nektro

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

nektro avatar Oct 18 '22 23:10 nektro

one of the frames of https://github.com/ziglang/zig/issues/11504 (Apr 23) exhibits this pattern as well

nektro avatar Oct 18 '22 23:10 nektro

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

jcmoyer avatar Oct 23 '22 15:10 jcmoyer

got a stack trace in this pattern again but this time gdb failed too

(gdb) bt
No stack.

nektro avatar Oct 31 '22 19:10 nektro

Closing as presumed fixed, if you find a new repro post it here and I'll reopen.

Vexu avatar Nov 28 '22 19:11 Vexu