Function std::panic::always_abort
pub fn always_abort()
Make all future panics abort directly without running the panic hook or unwinding.
There is no way to undo this; the effect lasts until the process exits or execs (or the equivalent).
Use after fork
This function is particularly useful for calling after libc::fork
. After fork
, in a multithreaded program it is (on many platforms) not safe to call the allocator. It is also generally highly undesirable for an unwind to unwind past the fork
, because that results in the unwind propagating to code that was only ever expecting to run in the parent.
panic::always_abort()
helps avoid both of these. It directly avoids any further unwinding, and if there is a panic, the abort will occur without allocating provided that the arguments to panic can be formatted without allocating.
Examples
#![feature(panic_always_abort)] use std::panic; panic::always_abort(); let _ = panic::catch_unwind(|| { panic!("inside the catch"); }); // We will have aborted already, due to the panic. unreachable!();
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/panic/fn.always_abort.html