authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-21 04:40:44-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-29 06:20:50-07:00
logaadd8d4a3efd8912c47b8ea1bbd4c3a6649c3e5d
tree9b6e2b59f28bd736c70a103fb063a55e3ddafef9
parent4ed74a9f8ab97f3358fc881d0e2f6359e22186d6

std: back out the StackTrace byval changes

Let's keep passing this thing by pointer

6 files changed, 21 insertions(+), 21 deletions(-)

lib/compiler/test_runner.zig+2-2
...@@ -148,7 +148,7 @@ fn mainServer() !void {...@@ -148,7 +148,7 @@ fn mainServer() !void {
148 error.SkipZigTest => .skip,148 error.SkipZigTest => .skip,
149 else => s: {149 else => s: {
150 if (@errorReturnTrace()) |trace| {150 if (@errorReturnTrace()) |trace| {
151 std.debug.dumpStackTrace(trace.*);151 std.debug.dumpStackTrace(trace);
152 }152 }
153 break :s .fail;153 break :s .fail;
154 },154 },
...@@ -269,7 +269,7 @@ fn mainTerminal() void {...@@ -269,7 +269,7 @@ fn mainTerminal() void {
269 std.debug.print("FAIL ({t})\n", .{err});269 std.debug.print("FAIL ({t})\n", .{err});
270 }270 }
271 if (@errorReturnTrace()) |trace| {271 if (@errorReturnTrace()) |trace| {
272 std.debug.dumpStackTrace(trace.*);272 std.debug.dumpStackTrace(trace);
273 }273 }
274 test_node.end();274 test_node.end();
275 },275 },
lib/std/Build/Step.zig+1-1
...@@ -332,7 +332,7 @@ pub fn cast(step: *Step, comptime T: type) ?*T {...@@ -332,7 +332,7 @@ pub fn cast(step: *Step, comptime T: type) ?*T {
332pub fn dump(step: *Step, w: *Io.Writer, tty_config: Io.tty.Config) void {332pub fn dump(step: *Step, w: *Io.Writer, tty_config: Io.tty.Config) void {
333 if (step.debug_stack_trace.instruction_addresses.len > 0) {333 if (step.debug_stack_trace.instruction_addresses.len > 0) {
334 w.print("name: '{s}'. creation stack trace:\n", .{step.name}) catch {};334 w.print("name: '{s}'. creation stack trace:\n", .{step.name}) catch {};
335 std.debug.writeStackTrace(step.debug_stack_trace, w, tty_config) catch {};335 std.debug.writeStackTrace(&step.debug_stack_trace, w, tty_config) catch {};
336 } else {336 } else {
337 const field = "debug_stack_frames_count";337 const field = "debug_stack_frames_count";
338 comptime assert(@hasField(Build, field));338 comptime assert(@hasField(Build, field));
lib/std/Thread.zig+2-2
...@@ -577,7 +577,7 @@ fn callFn(comptime f: anytype, args: anytype) switch (Impl) {...@@ -577,7 +577,7 @@ fn callFn(comptime f: anytype, args: anytype) switch (Impl) {
577 @call(.auto, f, args) catch |err| {577 @call(.auto, f, args) catch |err| {
578 std.debug.print("error: {s}\n", .{@errorName(err)});578 std.debug.print("error: {s}\n", .{@errorName(err)});
579 if (@errorReturnTrace()) |trace| {579 if (@errorReturnTrace()) |trace| {
580 std.debug.dumpStackTrace(trace.*);580 std.debug.dumpStackTrace(trace);
581 }581 }
582 };582 };
583583
...@@ -1010,7 +1010,7 @@ const WasiThreadImpl = struct {...@@ -1010,7 +1010,7 @@ const WasiThreadImpl = struct {
1010 @call(.auto, f, w.args) catch |err| {1010 @call(.auto, f, w.args) catch |err| {
1011 std.debug.print("error: {s}\n", .{@errorName(err)});1011 std.debug.print("error: {s}\n", .{@errorName(err)});
1012 if (@errorReturnTrace()) |trace| {1012 if (@errorReturnTrace()) |trace| {
1013 std.debug.dumpStackTrace(trace.*);1013 std.debug.dumpStackTrace(trace);
1014 }1014 }
1015 };1015 };
1016 },1016 },
lib/std/debug.zig+5-5
...@@ -553,7 +553,7 @@ pub fn defaultPanic(...@@ -553,7 +553,7 @@ pub fn defaultPanic(
553553
554 if (@errorReturnTrace()) |t| if (t.index > 0) {554 if (@errorReturnTrace()) |t| if (t.index > 0) {
555 stderr.writeAll("error return context:\n") catch break :trace;555 stderr.writeAll("error return context:\n") catch break :trace;
556 writeStackTrace(t.*, stderr, tty_config) catch break :trace;556 writeStackTrace(t, stderr, tty_config) catch break :trace;
557 stderr.writeAll("\nstack trace:\n") catch break :trace;557 stderr.writeAll("\nstack trace:\n") catch break :trace;
558 };558 };
559 writeCurrentStackTrace(.{559 writeCurrentStackTrace(.{
...@@ -765,12 +765,12 @@ pub const FormatStackTrace = struct {...@@ -765,12 +765,12 @@ pub const FormatStackTrace = struct {
765765
766 pub fn format(context: @This(), writer: *Io.Writer) Io.Writer.Error!void {766 pub fn format(context: @This(), writer: *Io.Writer) Io.Writer.Error!void {
767 try writer.writeAll("\n");767 try writer.writeAll("\n");
768 try writeStackTrace(context.stack_trace, writer, context.tty_config);768 try writeStackTrace(&context.stack_trace, writer, context.tty_config);
769 }769 }
770};770};
771771
772/// Write a previously captured stack trace to `writer`, annotated with source locations.772/// Write a previously captured stack trace to `writer`, annotated with source locations.
773pub fn writeStackTrace(st: StackTrace, writer: *Writer, tty_config: tty.Config) Writer.Error!void {773pub fn writeStackTrace(st: *const StackTrace, writer: *Writer, tty_config: tty.Config) Writer.Error!void {
774 if (!std.options.allow_stack_tracing) {774 if (!std.options.allow_stack_tracing) {
775 tty_config.setColor(writer, .dim) catch {};775 tty_config.setColor(writer, .dim) catch {};
776 try writer.print("Cannot print stack trace: stack tracing is disabled\n", .{});776 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)...@@ -808,7 +808,7 @@ pub fn writeStackTrace(st: StackTrace, writer: *Writer, tty_config: tty.Config)
808 }808 }
809}809}
810/// A thin wrapper around `writeStackTrace` which writes to stderr and ignores write errors.810/// A thin wrapper around `writeStackTrace` which writes to stderr and ignores write errors.
811pub fn dumpStackTrace(st: StackTrace) void {811pub fn dumpStackTrace(st: *const StackTrace) void {
812 const tty_config = tty.detectConfig(.stderr());812 const tty_config = tty.detectConfig(.stderr());
813 const stderr = lockStderrWriter(&.{});813 const stderr = lockStderrWriter(&.{});
814 defer unlockStderrWriter();814 defer unlockStderrWriter();
...@@ -1686,7 +1686,7 @@ pub fn ConfigurableTrace(comptime size: usize, comptime stack_frame_count: usize...@@ -1686,7 +1686,7 @@ pub fn ConfigurableTrace(comptime size: usize, comptime stack_frame_count: usize
1686 .index = frames.len,1686 .index = frames.len,
1687 .instruction_addresses = frames,1687 .instruction_addresses = frames,
1688 };1688 };
1689 writeStackTrace(stack_trace, stderr, tty_config) catch return;1689 writeStackTrace(&stack_trace, stderr, tty_config) catch return;
1690 }1690 }
1691 if (t.index > end) {1691 if (t.index > end) {
1692 stderr.print("{d} more traces not shown; consider increasing trace size\n", .{1692 stderr.print("{d} more traces not shown; consider increasing trace size\n", .{
lib/std/start.zig+1-1
...@@ -708,7 +708,7 @@ pub inline fn callMain() u8 {...@@ -708,7 +708,7 @@ pub inline fn callMain() u8 {
708 switch (native_os) {708 switch (native_os) {
709 .freestanding, .other => {},709 .freestanding, .other => {},
710 else => if (@errorReturnTrace()) |trace| {710 else => if (@errorReturnTrace()) |trace| {
711 std.debug.dumpStackTrace(trace.*);711 std.debug.dumpStackTrace(trace);
712 },712 },
713 }713 }
714 return 1;714 return 1;
test/stack_traces.zig+10-10
...@@ -116,12 +116,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {...@@ -116,12 +116,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
116 .source =116 .source =
117 \\pub fn main() void {117 \\pub fn main() void {
118 \\ var stack_trace_buf: [8]usize = undefined;118 \\ var stack_trace_buf: [8]usize = undefined;
119 \\ dumpIt(captureIt(&stack_trace_buf));119 \\ dumpIt(&captureIt(&stack_trace_buf));
120 \\}120 \\}
121 \\fn captureIt(buf: []usize) std.builtin.StackTrace {121 \\fn captureIt(buf: []usize) std.builtin.StackTrace {
122 \\ return captureItInner(buf);122 \\ return captureItInner(buf);
123 \\}123 \\}
124 \\fn dumpIt(st: std.builtin.StackTrace) void {124 \\fn dumpIt(st: *const std.builtin.StackTrace) void {
125 \\ std.debug.dumpStackTrace(st);125 \\ std.debug.dumpStackTrace(st);
126 \\}126 \\}
127 \\fn captureItInner(buf: []usize) std.builtin.StackTrace {127 \\fn captureItInner(buf: []usize) std.builtin.StackTrace {
...@@ -140,8 +140,8 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {...@@ -140,8 +140,8 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
140 \\ return captureItInner(buf);140 \\ return captureItInner(buf);
141 \\ ^141 \\ ^
142 \\source.zig:3:22: [address] in main142 \\source.zig:3:22: [address] in main
143 \\ dumpIt(captureIt(&stack_trace_buf));143 \\ dumpIt(&captureIt(&stack_trace_buf));
144 \\ ^144 \\ ^
145 \\145 \\
146 ,146 ,
147 .expect_strip =147 .expect_strip =
...@@ -157,12 +157,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {...@@ -157,12 +157,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
157 .source =157 .source =
158 \\pub fn main() void {158 \\pub fn main() void {
159 \\ var stack_trace_buf: [8]usize = undefined;159 \\ var stack_trace_buf: [8]usize = undefined;
160 \\ dumpIt(captureIt(&stack_trace_buf));160 \\ dumpIt(&captureIt(&stack_trace_buf));
161 \\}161 \\}
162 \\fn captureIt(buf: []usize) std.builtin.StackTrace {162 \\fn captureIt(buf: []usize) std.builtin.StackTrace {
163 \\ return captureItInner(buf);163 \\ return captureItInner(buf);
164 \\}164 \\}
165 \\fn dumpIt(st: std.builtin.StackTrace) void {165 \\fn dumpIt(st: *const std.builtin.StackTrace) void {
166 \\ std.debug.dumpStackTrace(st);166 \\ std.debug.dumpStackTrace(st);
167 \\}167 \\}
168 \\fn captureItInner(buf: []usize) std.builtin.StackTrace {168 \\fn captureItInner(buf: []usize) std.builtin.StackTrace {
...@@ -186,12 +186,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {...@@ -186,12 +186,12 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
186 \\ t.join();186 \\ t.join();
187 \\}187 \\}
188 \\fn threadMain(stack_trace_buf: []usize) void {188 \\fn threadMain(stack_trace_buf: []usize) void {
189 \\ dumpIt(captureIt(stack_trace_buf));189 \\ dumpIt(&captureIt(stack_trace_buf));
190 \\}190 \\}
191 \\fn captureIt(buf: []usize) std.builtin.StackTrace {191 \\fn captureIt(buf: []usize) std.builtin.StackTrace {
192 \\ return captureItInner(buf);192 \\ return captureItInner(buf);
193 \\}193 \\}
194 \\fn dumpIt(st: std.builtin.StackTrace) void {194 \\fn dumpIt(st: *const std.builtin.StackTrace) void {
195 \\ std.debug.dumpStackTrace(st);195 \\ std.debug.dumpStackTrace(st);
196 \\}196 \\}
197 \\fn captureItInner(buf: []usize) std.builtin.StackTrace {197 \\fn captureItInner(buf: []usize) std.builtin.StackTrace {
...@@ -210,8 +210,8 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {...@@ -210,8 +210,8 @@ pub fn addCases(cases: *@import("tests.zig").StackTracesContext) void {
210 \\ return captureItInner(buf);210 \\ return captureItInner(buf);
211 \\ ^211 \\ ^
212 \\source.zig:7:22: [address] in threadMain212 \\source.zig:7:22: [address] in threadMain
213 \\ dumpIt(captureIt(stack_trace_buf));213 \\ dumpIt(&captureIt(stack_trace_buf));
214 \\ ^214 \\ ^
215 \\215 \\
216 ,216 ,
217 .expect_strip =217 .expect_strip =