//@ run-pass //@ needs-threads //@ compile-flags: -Copt-level=0 // The channel's `Block::new` was causing a stack overflow because it held 32 item slots, which is // 1MiB for this test's `BigStruct` -- instantiated on the stack before moving to `Box::new`. // // That block is now initialized directly on the heap. // // Ref: https://github.com/rust-lang/rust/issues/102246 use std::sync::mpsc::channel; use std::thread; const N: usize = 32_768; struct BigStruct { _data: [u8; N], } fn main() { let (sender, receiver) = channel::(); let thread1 = thread::spawn(move || { sender.send(BigStruct { _data: [0u8; N] }).unwrap(); }); thread1.join().unwrap(); for _data in receiver.try_iter() {} }