tokio-rs / loom

Concurrency permutation testing tool for Rust.
MIT License
2.08k stars 110 forks source link

Fix for corner case where `RwLock` could be acquired in write mode while write locked #300

Closed Pointerbender closed 1 year ago

Pointerbender commented 1 year ago

This PR contains a minor 2 line fix for a corner case where a RwLock could erroneously be acquired in write mode while already being write locked. This led to a panic saying loom::RwLock state corrupt: "WouldBlock", while it instead should return the WouldBlock error state on RwLock::try_write or (potentially) signal a deadlock when calling RwLock::write. I also took the liberty of adding some more test cases for RwLock, which will also detect any regressions of this bug.

Pointerbender commented 1 year ago

Hi! This PR was approved a few weeks ago but it is not yet merged. Is this delayed intentionally until the next release (where PRs are then cherry-picked and merged for release) or should it be merged already? :)

Darksonn commented 1 year ago

We normally merge things immediately. I've gone ahead and merged your PR>

Pointerbender commented 1 year ago

Thank you!