"maybe..." <- > <@jamesmunns:beeper.com> maybe > > ```rust > pub fn recv() -> T { > let uc = UnsafeCell::>::new(MaybeUninit::uninit()); > > compiler_fence(Ordering::Release); > > critical_section::with(|cs| /* magic */); > > compiler_fence(Ordering::Acquire); > let m = uc.into_inner(); > unsafe { m.assume_init() } > } > ``` I feel like this should work, but I can't tell you why it doesn't. have you guaranteed the kernel is actually doing good ops to the right memory, and it's not a bug somewhere else? and peeked at the asm to see if it is just doing garbage (and maybe diff with compiler fence vs the fence?)