added custom panic hook (#1762)

This commit is contained in:
0rphon 2022-04-20 15:46:41 -07:00 committed by GitHub
parent 23fca6af47
commit b767498152
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 1 deletions

12
Cargo.lock generated
View File

@ -1262,6 +1262,7 @@ version = "1.5.3"
dependencies = [
"ansi_term",
"assert_cmd",
"backtrace",
"clap 3.1.9",
"color-backtrace",
"colored",
@ -1282,6 +1283,7 @@ dependencies = [
"serde_json",
"snarkvm-utilities 0.7.5 (git+https://github.com/AleoHQ/snarkVM.git?rev=51633e2)",
"structopt",
"sys-info",
"test_dir",
"toml",
"tracing",
@ -2589,6 +2591,16 @@ dependencies = [
"unicode-xid 0.2.2",
]
[[package]]
name = "sys-info"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c"
dependencies = [
"cc",
"libc",
]
[[package]]
name = "tempfile"
version = "3.3.0"

View File

@ -59,6 +59,12 @@ version = "0.5.1"
[dependencies.colored]
version = "2.0"
[dependencies.backtrace]
version = "0.3.65"
[dependencies.sys-info]
version = "0.9.1"
[dependencies.dirs]
version = "4.0.0"

View File

@ -175,8 +175,38 @@ enum CommandOpts {
// },
}
fn set_panic_hook() {
#[cfg(not(debug_assertions))]
std::panic::set_hook({
Box::new(move |e| {
println!(
"thread `{}` {}",
std::thread::current().name().unwrap_or("<unnamed>"),
e
);
println!("stack backtrace: \n{:?}", backtrace::Backtrace::new());
println!("error: internal compiler error: unexpected panic\n");
println!("note: the compiler unexpectedly panicked. this is a bug.\n");
println!("note: we would appreciate a bug report: https://github.com/AleoHQ/leo/issues/new?labels=bug,panic&template=bug.md&title=[Bug]\n");
println!(
"note: {} {} running on {} {}\n",
env!("CARGO_PKG_NAME"),
env!("CARGO_PKG_VERSION"),
sys_info::os_type().unwrap_or_else(|e| e.to_string()),
sys_info::os_release().unwrap_or_else(|e| e.to_string()),
);
println!(
"note: compiler args: {}\n",
std::env::args().collect::<Vec<_>>().join(" ")
);
println!("note: compiler flags: {:?}\n", Opt::from_args());
})
});
}
fn main() {
handle_error(run_with_args(Opt::from_args()))
set_panic_hook();
handle_error(run_with_args(Opt::from_args()));
}
/// Run command with custom build arguments.