Suggest using RUST_MIN_STACK if rustc overflowed
This commit is contained in:
parent
60891cab33
commit
542533865a
2 changed files with 7 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
//! Signal handler for rustc
|
//! Signal handler for rustc
|
||||||
//! Primarily used to extract a backtrace from stack overflow
|
//! Primarily used to extract a backtrace from stack overflow
|
||||||
|
|
||||||
|
use rustc_interface::util::{DEFAULT_STACK_SIZE, STACK_SIZE};
|
||||||
use std::alloc::{alloc, Layout};
|
use std::alloc::{alloc, Layout};
|
||||||
use std::{fmt, mem, ptr};
|
use std::{fmt, mem, ptr};
|
||||||
|
|
||||||
|
@ -100,7 +101,10 @@ extern "C" fn print_stack_trace(_: libc::c_int) {
|
||||||
written += 1;
|
written += 1;
|
||||||
}
|
}
|
||||||
raw_errln!("note: we would appreciate a report at https://github.com/rust-lang/rust");
|
raw_errln!("note: we would appreciate a report at https://github.com/rust-lang/rust");
|
||||||
written += 1;
|
// get the current stack size WITHOUT blocking and double it
|
||||||
|
let new_size = STACK_SIZE.get().copied().unwrap_or(DEFAULT_STACK_SIZE) * 2;
|
||||||
|
raw_errln!("help: you can increase rustc's stack size by setting RUST_MIN_STACK={new_size}");
|
||||||
|
written += 2;
|
||||||
if written > 24 {
|
if written > 24 {
|
||||||
// We probably just scrolled the earlier "we got SIGSEGV" message off the terminal
|
// We probably just scrolled the earlier "we got SIGSEGV" message off the terminal
|
||||||
raw_errln!("note: backtrace dumped due to SIGSEGV! resuming signal");
|
raw_errln!("note: backtrace dumped due to SIGSEGV! resuming signal");
|
||||||
|
|
|
@ -48,8 +48,8 @@ pub fn add_configuration(cfg: &mut Cfg, sess: &mut Session, codegen_backend: &dy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static STACK_SIZE: OnceLock<usize> = OnceLock::new();
|
pub static STACK_SIZE: OnceLock<usize> = OnceLock::new();
|
||||||
const DEFAULT_STACK_SIZE: usize = 8 * 1024 * 1024;
|
pub const DEFAULT_STACK_SIZE: usize = 8 * 1024 * 1024;
|
||||||
|
|
||||||
fn init_stack_size() -> usize {
|
fn init_stack_size() -> usize {
|
||||||
// Obey the environment setting or default
|
// Obey the environment setting or default
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue