Affected versions of this crate unconditionally implement Send/Sync for
This can lead to data races when types that are either
Arc<Cell<_>>) are contained inside
MvccRwLock and sent across thread boundaries. The data races can potentially lead to memory corruption (as demonstrated in the PoC from the original report issue).
Also, safe APIs of
MvccRwLock allow aliasing violations by allowing
LockResult<MutexGuard<Box<T>>> to co-exist in conflicting lifetime regions. The APIs of
MvccRwLock should either be marked as
MbccRwLock should be changed to private or pub(crate).