crossbeam-utils provides atomics, synchronization primitives, scoped threads, and other utilities for concurrent programming in Rust. crossbeam-utils prior to version 0.8.7 incorrectly assumed that the alignment of {i,u}64
was always the same as Atomic{I,U}64
. However, the alignment of {i,u}64
on a 32-bit target can be smaller than Atomic{I,U}64
. This can cause unaligned memory accesses and data race. Crates using fetch_*
methods with AtomicCell<{i,u}64>
are affected by this issue. 32-bit targets without Atomic{I,U}64
and 64-bit targets are not affected by this issue. This has been fixed in crossbeam-utils 0.8.7. There are currently no known workarounds.