blob: b1650bc9c83f6bc749a4c9a6b256909988f169a2 [file] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use std::panic;
use std::process::abort;
/// The intent of our panic hook is to get panic info and a stacktrace into the syslog, even for
/// jailed subprocesses. It will always abort on panic to ensure a minidump is generated.
///
/// Note that jailed processes will usually have a stacktrace of <unknown> because the backtrace
/// routines attempt to open this binary and are unable to do so in a jail.
pub fn set_panic_hook() {
let default_panic = panic::take_hook();
panic::set_hook(Box::new(move |info| {
// Ensure all in-flight metrics are fully flushed
metrics::get_destructor().cleanup();
// TODO(b/144724919): should update log_panic_info for this "cleanly exit crosvm" bug
// log_panic_info(default_panic.as_ref(), info);
default_panic(info);
// Abort to trigger the crash reporter so that a minidump is generated.
abort();
}));
}