3 #![allow(stable_features)]
5 // ignore-emscripten no threads support
8 #![feature(panic_update_hook)]
10 use std::sync::atomic::{AtomicUsize, Ordering};
14 static A: AtomicUsize = AtomicUsize::new(0);
15 static B: AtomicUsize = AtomicUsize::new(0);
16 static C: AtomicUsize = AtomicUsize::new(0);
19 panic::set_hook(Box::new(|_| { A.fetch_add(1, Ordering::SeqCst); }));
20 panic::update_hook(|prev, info| {
21 B.fetch_add(1, Ordering::SeqCst);
24 panic::update_hook(|prev, info| {
25 C.fetch_add(1, Ordering::SeqCst);
29 let _ = thread::spawn(|| {
33 assert_eq!(1, A.load(Ordering::SeqCst));
34 assert_eq!(1, B.load(Ordering::SeqCst));
35 assert_eq!(1, C.load(Ordering::SeqCst));