ziglang/zig

`panic` bug in printed trace

Opened this issue · 1 comments

I'm on macos 10.15.7 using the binary release zig-macos-x86_64-0.8.0 and can't reproduce the examples in the language documentation that contain a panic. Every example I have tried has printed a trace that points to the wrong location.

e.g. when I try to test the following example

const std = @import("std");

test "pointer alignment safety" {
    var array align(4) = [_]u32{ 0x11111111, 0x11111111 };
    const bytes = std.mem.sliceAsBytes(array[0..]);
    try std.testing.expect(foo(bytes) == 0x11111111);
}
fn foo(bytes: []u8) u32 {
    const slice4 = bytes[1..5];
    const int_slice = std.mem.bytesAsSlice(u32, @alignCast(4, slice4));
    return int_slice[0];
}

I get

myers-mac-28:genart broaddus$ zig test src/test2.zig
thread 2628295 panic: incorrect alignment"...
/Users/broaddus/Downloads/zig-macos-x86_64-0.8.0/lib/std/debug.zig:272:92: 0x104a5d5f1 in std.debug.panicExtra (test)
                    stderr.print("thread {d} panic: ", .{current_thread_id}) catch os.abort();
                                                                                           ^
/Users/broaddus/Desktop/ProjectsPersonal/zig/genart/src/test2.zig:6:5: 0x104a5b3c9 in test "pointer alignment safety" (test)
    try std.testing.expect(foo(bytes) == 0x11111111);
    ^
/Users/broaddus/Downloads/zig-macos-x86_64-0.8.0/lib/std/special/test_runner.zig:34:71: 0x104a5da09 in std.special.main (test)
    const root_node = progress.start("Test", test_fn_list.len) catch |err| switch (err) {
                                                                      ^
/Users/broaddus/Downloads/zig-macos-x86_64-0.8.0/lib/std/fmt.zig:242:20: 0x104a96158 in std.fmt.format (test)
        options = .{};
                   ^
/Users/broaddus/Downloads/zig-macos-x86_64-0.8.0/lib/std/debug.zig:0:0: 0x104a5f727 in ??? (test)
/Users/broaddus/Downloads/zig-macos-x86_64-0.8.0/lib/std/debug.zig:65:38: 0x104a5f665 in std.debug.print (test)
    const held = stderr_mutex.acquire();
                                     ^
???:?:?: 0x7fff736a9cc8 in ??? (???)
???:?:?: 0x1 in ??? (???)
error: the following test command crashed:
src/zig-cache/o/503d780bce0fcc566a71b0b9b18101d4/test /Users/broaddus/Downloads/zig-macos-x86_64-0.8.0/zig

which doesn't point to the correct location of the panic and differs from the documented example here.

This appears to be working correctly in 0.9.1, both from 'zig build run' and 'zig build test'. Top of the stack is in the 'foo' function now and not in the panic handler as shown in this bug.