diff --git a/aquatic_common/src/lib.rs b/aquatic_common/src/lib.rs index 79b91e3..a5f25aa 100644 --- a/aquatic_common/src/lib.rs +++ b/aquatic_common/src/lib.rs @@ -55,13 +55,15 @@ pub struct PanicSentinel(Arc); impl Drop for PanicSentinel { fn drop(&mut self) { - self.0.store(true, Ordering::SeqCst); + let already_triggered = self.0.fetch_or(true, Ordering::SeqCst); - if unsafe { libc::raise(15) } == -1 { - panic!( - "Could not raise SIGTERM: {:#}", - ::std::io::Error::last_os_error() - ) + if !already_triggered { + if unsafe { libc::raise(15) } == -1 { + panic!( + "Could not raise SIGTERM: {:#}", + ::std::io::Error::last_os_error() + ) + } } } }