#![feature(core_intrinsics)]
extern "C" fn handler(sig: i32) {
let thread = std::thread::current();
let name = thread.name().unwrap_or("<unnamed>");
println!(
"Received signal '{}' in thread '{}'. Backtrace:\n{:?}",
sig,
name,
backtrace::Backtrace::new()
);
std::intrinsics::abort();
}
pub fn install() {
use sig::{ffi::Sig, signal};
signal!(Sig::SEGV, handler);
signal!(Sig::ILL, handler);
signal!(Sig::IOT, handler);
signal!(Sig::BUS, handler);
}