//@only-target-windows: Uses win32 api functions // We are making scheduler assumptions here. //@compile-flags: -Zmiri-preemption-rate=0 use std::os::windows::io::IntoRawHandle; use std::thread; extern "system" { fn CloseHandle(handle: usize) -> i32; } fn main() { let thread = thread::spawn(|| {}).into_raw_handle() as usize; // this yield ensures that `thread` is terminated by this point thread::yield_now(); unsafe { assert_ne!(CloseHandle(thread), 0); } }