Commit aadd8d4a3e

Andrew Kelley <andrew@ziglang.org>
2025-10-21 13:40:44
std: back out the StackTrace byval changes
Let's keep passing this thing by pointer
1 parent 4ed74a9
Changed files (6)
lib/compiler/test_runner.zig
@@ -148,7 +148,7 @@ fn mainServer() !void {
                     error.SkipZigTest => .skip,
                     else => s: {
                         if (@errorReturnTrace()) |trace| {
-                            std.debug.dumpStackTrace(trace.*);
+                            std.debug.dumpStackTrace(trace);
                         }
                         break :s .fail;
                     },
@@ -269,7 +269,7 @@ fn mainTerminal() void {
                     std.debug.print("FAIL ({t})\n", .{err});
                 }
                 if (@errorReturnTrace()) |trace| {
-                    std.debug.dumpStackTrace(trace.*);
+                    std.debug.dumpStackTrace(trace);
                 }
                 test_node.end();
             },
lib/std/Build/Step.zig
@@ -332,7 +332,7 @@ pub fn cast(step: *Step, comptime T: type) ?*T {
 pub fn dump(step: *Step, w: *Io.Writer, tty_config: Io.tty.Config) void {
     if (step.debug_stack_trace.instruction_addresses.len > 0) {
         w.print("name: '{s}'. creation stack trace:\n", .{step.name}) catch {};
-        std.debug.writeStackTrace(step.debug_stack_trace, w, tty_config) catch {};
+        std.debug.writeStackTrace(&step.debug_stack_trace, w, tty_config) catch {};
     } else {
         const field = "debug_stack_frames_count";
         comptime assert(@hasField(Build, field));
lib/std/debug.zig
@@ -553,7 +553,7 @@ pub fn defaultPanic(
 
                 if (@errorReturnTrace()) |t| if (t.index > 0) {
                     stderr.writeAll("error return context:\n") catch break :trace;
-                    writeStackTrace(t.*, stderr, tty_config) catch break :trace;
+                    writeStackTrace(t, stderr, tty_config) catch break :trace;
                     stderr.writeAll("\nstack trace:\n") catch break :trace;
                 };
                 writeCurrentStackTrace(.{
@@ -765,12 +765,12 @@ pub const FormatStackTrace = struct {
 
     pub fn format(context: @This(), writer: *Io.Writer) Io.Writer.Error!void {
         try writer.writeAll("\n");
-        try writeStackTrace(context.stack_trace, writer, context.tty_config);
+        try writeStackTrace(&context.stack_trace, writer, context.tty_config);
     }
 };
 
 /// Write a previously captured stack trace to `writer`, annotated with source locations.
-pub fn writeStackTrace(st: StackTrace, writer: *Writer, tty_config: tty.Config) Writer.Error!void {
+pub fn writeStackTrace(st: *const StackTrace, writer: *Writer, tty_config: tty.Config) Writer.Error!void {
     if (!std.options.allow_stack_tracing) {
         tty_config.setColor(writer, .dim) catch {};
         try writer.print("Cannot print stack trace: stack tracing is disabled\n", .{});
@@ -808,7 +808,7 @@ pub fn writeStackTrace(st: StackTrace, writer: *Writer, tty_config: tty.Config)
     }
 }
 /// A thin wrapper around `writeStackTrace` which writes to stderr and ignores write errors.
-pub fn dumpStackTrace(st: StackTrace) void {
+pub fn dumpStackTrace(st: *const StackTrace) void {
     const tty_config = tty.detectConfig(.stderr());
     const stderr = lockStderrWriter(&.{});
     defer unlockStderrWriter();
@@ -1686,7 +1686,7 @@ pub fn ConfigurableTrace(comptime size: usize, comptime stack_frame_count: usize
                     .index = frames.len,
                     .instruction_addresses = frames,
                 };
-                writeStackTrace(stack_trace, stderr, tty_config) catch return;
+                writeStackTrace(&stack_trace, stderr, tty_config) catch return;
             }
             if (t.index > end) {
                 stderr.print("{d} more traces not shown; consider increasing trace size\n", .{
lib/std/start.zig
@@ -708,7 +708,7 @@ pub inline fn callMain() u8 {
                 switch (native_os) {
                     .freestanding, .other => {},
                     else => if (@errorReturnTrace()) |trace| {
-                        std.debug.dumpStackTrace(trace.*);
+                        std.debug.dumpStackTrace(trace);
                     },
                 }
                 return 1;
lib/std/Thread.zig
@@ -577,7 +577,7 @@ fn callFn(comptime f: anytype, args: anytype) switch (Impl) {
                     @call(.auto, f, args) catch |err| {
                         std.debug.print("error: {s}\n", .{@errorName(err)});
                         if (@errorReturnTrace()) |trace| {
-                            std.debug.dumpStackTrace(trace.*);
+                            std.debug.dumpStackTrace(trace);
                         }
                     };
 
@@ -1010,7 +1010,7 @@ const WasiThreadImpl = struct {
                         @call(.auto, f, w.args) catch |err| {
                             std.debug.print("error: {s}\n", .{@errorName(err)});
                             if (@errorReturnTrace()) |trace| {
-                                std.debug.dumpStackTrace(trace.*);
+                                std.debug.dumpStackTrace(trace);
                             }
                         };
                     },
test/stack_traces.zig
@@ -116,12 +116,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
         .source =
         \\pub fn main() void {
         \\    var stack_trace_buf: [8]usize = undefined;
-        \\    dumpIt(captureIt(&stack_trace_buf));
+        \\    dumpIt(&captureIt(&stack_trace_buf));
         \\}
         \\fn captureIt(buf: []usize) std.builtin.StackTrace {
         \\    return captureItInner(buf);
         \\}
-        \\fn dumpIt(st: std.builtin.StackTrace) void {
+        \\fn dumpIt(st: *const std.builtin.StackTrace) void {
         \\    std.debug.dumpStackTrace(st);
         \\}
         \\fn captureItInner(buf: []usize) std.builtin.StackTrace {
@@ -140,8 +140,8 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
         \\    return captureItInner(buf);
         \\                         ^
         \\source.zig:3:22: [address] in main
-        \\    dumpIt(captureIt(&stack_trace_buf));
-        \\                    ^
+        \\    dumpIt(&captureIt(&stack_trace_buf));
+        \\                     ^
         \\
         ,
         .expect_strip =
@@ -157,12 +157,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
         .source =
         \\pub fn main() void {
         \\    var stack_trace_buf: [8]usize = undefined;
-        \\    dumpIt(captureIt(&stack_trace_buf));
+        \\    dumpIt(&captureIt(&stack_trace_buf));
         \\}
         \\fn captureIt(buf: []usize) std.builtin.StackTrace {
         \\    return captureItInner(buf);
         \\}
-        \\fn dumpIt(st: std.builtin.StackTrace) void {
+        \\fn dumpIt(st: *const std.builtin.StackTrace) void {
         \\    std.debug.dumpStackTrace(st);
         \\}
         \\fn captureItInner(buf: []usize) std.builtin.StackTrace {
@@ -186,12 +186,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
         \\    t.join();
         \\}
         \\fn threadMain(stack_trace_buf: []usize) void {
-        \\    dumpIt(captureIt(stack_trace_buf));
+        \\    dumpIt(&captureIt(stack_trace_buf));
         \\}
         \\fn captureIt(buf: []usize) std.builtin.StackTrace {
         \\    return captureItInner(buf);
         \\}
-        \\fn dumpIt(st: std.builtin.StackTrace) void {
+        \\fn dumpIt(st: *const std.builtin.StackTrace) void {
         \\    std.debug.dumpStackTrace(st);
         \\}
         \\fn captureItInner(buf: []usize) std.builtin.StackTrace {
@@ -210,8 +210,8 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
         \\    return captureItInner(buf);
         \\                         ^
         \\source.zig:7:22: [address] in threadMain
-        \\    dumpIt(captureIt(stack_trace_buf));
-        \\                    ^
+        \\    dumpIt(&captureIt(stack_trace_buf));
+        \\                     ^
         \\
         ,
         .expect_strip =