Clarify arbitrary constants

First, we reuse the `MAX_FRAMES` constant.

Co-authored-by: erikdesjardins <erikdesjardins@users.noreply.github.com>

Then we choose an arbitrary recursion depth for
the other case. In this case, I used 2d20. Honest.
This commit is contained in:
Jubilee 2023-07-15 01:07:14 -07:00 committed by Jubilee Young
parent 1e65b5b741
commit 3dee9775a8

View File

@ -87,14 +87,15 @@ extern "C" fn print_stack_trace(_: libc::c_int) {
raw_errln!("");
written += rem.len() + 1;
if cyclic || stack.len() == 256 {
let random_depth = || 8 * 16; // chosen by random diceroll (2d20)
if cyclic || stack.len() > random_depth() {
// technically speculation, but assert it with confidence anyway.
// rustc only arrived in this signal handler because bad things happened
// and this message is for explaining it's not the programmer's fault
raw_errln!("note: rustc unexpectedly overflowed its stack! this is a bug");
written += 1;
}
if stack.len() == 256 {
if stack.len() == MAX_FRAMES {
raw_errln!("note: maximum backtrace depth reached, frames may have been lost");
written += 1;
}