rust/tests/ui/threads-sendsync/issue-24313.rs
2024-08-24 05:32:52 +02:00

35 lines
803 B
Rust

//@ run-pass
//@ needs-threads
//@ ignore-sgx no processes
use std::process::Command;
use std::{env, thread};
struct Handle(i32);
impl Drop for Handle {
fn drop(&mut self) {
panic!();
}
}
thread_local!(static HANDLE: Handle = Handle(0));
fn main() {
let args = env::args().collect::<Vec<_>>();
if args.len() == 1 {
let out = Command::new(&args[0]).arg("test").output().unwrap();
let stderr = std::str::from_utf8(&out.stderr).unwrap();
assert!(stderr.contains("explicit panic"), "bad failure message:\n{}\n", stderr);
} else {
// TLS dtors are not always run on process exit
thread::spawn(|| {
HANDLE.with(|h| {
println!("{}", h.0);
});
})
.join()
.unwrap();
}
}