//@compile-flags: -Zmiri-disable-isolation -Zmiri-preemption-rate=0 //@ignore-target-windows: No libc on Windows use std::ffi::CStr; use std::thread; fn main() { unsafe { thread::spawn(|| { // Access the environment in another thread without taking the env lock let s = libc::getenv("MIRI_ENV_VAR_TEST\0".as_ptr().cast()); if s.is_null() { panic!("null"); } let _s = String::from_utf8_lossy(CStr::from_ptr(s).to_bytes()); }); thread::yield_now(); // After the main thread exits, env vars will be cleaned up -- but because we have not *joined* // the other thread, those accesses technically race with those in the other thread. // We don't want to emit an error here, though. } }