1#![feature(core_intrinsics)]
2
3extern "C" fn handler(sig: i32) {
4 let thread = std::thread::current();
5 let name = thread.name().unwrap_or("<unnamed>");
6 println!(
7 "Received signal '{}' in thread '{}'. Backtrace:\n{:?}",
8 sig,
9 name,
10 backtrace::Backtrace::new()
11 );
12
13 std::intrinsics::abort();
17}
18
19pub fn install() {
20 use sig::{ffi::Sig, signal};
21
22 signal!(Sig::SEGV, handler);
24 signal!(Sig::ILL, handler);
26 signal!(Sig::IOT, handler);
29 signal!(Sig::BUS, handler);
31}