spin-rs initialisation failure in `Once::try_call_once` can lead to undefined behaviour for other initialisers
Once::try_call_once is unsound if invoked more than once concurrently and any call fails to initialise successfully.
Once::try_call_once is unsound if invoked more than once concurrently and any call fails to initialise successfully.
Wrong memory orderings inside the RwLock implementation allow for two writers to acquire the lock at the same time. The drop implementation used Ordering::Relaxed, which allows the compiler or CPU to reorder a mutable access on the locked data after the lock has been yielded. Only users of the RwLock implementation are affected. Users of Once (including users of lazy_static with the spin_no_std feature enabled) are NOT affected. On strongly …