mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
PanicSentinel: only set flag if dropped while panicking
This commit is contained in:
parent
94ee4027e8
commit
ffa7c7532f
1 changed files with 9 additions and 7 deletions
|
|
@ -55,14 +55,16 @@ pub struct PanicSentinel(Arc<AtomicBool>);
|
||||||
|
|
||||||
impl Drop for PanicSentinel {
|
impl Drop for PanicSentinel {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
let already_triggered = self.0.fetch_or(true, Ordering::SeqCst);
|
if ::std::thread::panicking() {
|
||||||
|
let already_triggered = self.0.fetch_or(true, Ordering::SeqCst);
|
||||||
|
|
||||||
if !already_triggered {
|
if !already_triggered {
|
||||||
if unsafe { libc::raise(15) } == -1 {
|
if unsafe { libc::raise(15) } == -1 {
|
||||||
panic!(
|
panic!(
|
||||||
"Could not raise SIGTERM: {:#}",
|
"Could not raise SIGTERM: {:#}",
|
||||||
::std::io::Error::last_os_error()
|
::std::io::Error::last_os_error()
|
||||||
)
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue