From de14f1f932f4f11130be3fed5cd370bd0936032e Mon Sep 17 00:00:00 2001 From: jyn Date: Fri, 5 Jul 2024 16:34:32 -0400 Subject: [PATCH] add test that multi-threaded panics aren't interleaved --- tests/ui/backtrace/synchronized-panic-handler.rs | 15 +++++++++++++++ .../synchronized-panic-handler.run.stderr | 5 +++++ 2 files changed, 20 insertions(+) create mode 100644 tests/ui/backtrace/synchronized-panic-handler.rs create mode 100644 tests/ui/backtrace/synchronized-panic-handler.run.stderr diff --git a/tests/ui/backtrace/synchronized-panic-handler.rs b/tests/ui/backtrace/synchronized-panic-handler.rs new file mode 100644 index 00000000000..0ea285968d5 --- /dev/null +++ b/tests/ui/backtrace/synchronized-panic-handler.rs @@ -0,0 +1,15 @@ +//@ run-pass +//@ check-run-results +//@ edition:2021 +use std::thread; +const PANIC_MESSAGE: &str = "oops oh no woe is me"; + +fn entry() { + panic!("{PANIC_MESSAGE}") +} + +fn main() { + let (a, b) = (thread::spawn(entry), thread::spawn(entry)); + assert_eq!(&**a.join().unwrap_err().downcast::().unwrap(), PANIC_MESSAGE); + assert_eq!(&**b.join().unwrap_err().downcast::().unwrap(), PANIC_MESSAGE); +} diff --git a/tests/ui/backtrace/synchronized-panic-handler.run.stderr b/tests/ui/backtrace/synchronized-panic-handler.run.stderr new file mode 100644 index 00000000000..06ef53836c2 --- /dev/null +++ b/tests/ui/backtrace/synchronized-panic-handler.run.stderr @@ -0,0 +1,5 @@ +thread '' panicked at $DIR/synchronized-panic-handler.rs:thread '8:5' panicked at : +oops oh no woe is me$DIR/synchronized-panic-handler.rs +:note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace +8:5: +oops oh no woe is me