Commit a4523a2d4a
Changed files (2)
lib
lib/std/builtin.zig
@@ -869,8 +869,10 @@ pub noinline fn returnError(st: *StackTrace) void {
}
pub inline fn addErrRetTraceAddr(st: *StackTrace, addr: usize) void {
- st.instruction_addresses[st.index & (st.instruction_addresses.len - 1)] = addr;
- st.index +%= 1;
+ if (st.index < st.instruction_addresses.len)
+ st.instruction_addresses[st.index] = addr;
+
+ st.index += 1;
}
const std = @import("std.zig");
lib/std/debug.zig
@@ -411,6 +411,14 @@ pub fn writeStackTrace(
const return_address = stack_trace.instruction_addresses[frame_index];
try printSourceAtAddress(debug_info, out_stream, return_address - 1, tty_config);
}
+
+ if (stack_trace.index > stack_trace.instruction_addresses.len) {
+ const dropped_frames = stack_trace.index - stack_trace.instruction_addresses.len;
+
+ tty_config.setColor(out_stream, .Bold);
+ try out_stream.print("({d} additional stack frames skipped...)\n", .{dropped_frames});
+ tty_config.setColor(out_stream, .Reset);
+ }
}
pub const StackIterator = struct {