I was wondering how something so basic could go unnoticed for so long. Halfway down the page on OP's link, a user u/rbmm provides a compelling answer: that there are (possibly expected?) cases where a thread trying to acquire the lock in shared mode can accidentally get it in exclusive mode instead. This is due to interleaving of atomic bit test-and-[re]set operations between the (shared mode acquire) thread and the…
If that "rbmm" is the same person as I've seen on other sites, and the characteristic non-native English is a clue that it is, he certainly knows his stuff. threads holding the lock don't wait for each other Unless you're doing nested locking.
In my experience, needing to do nested locking is a sign you're up the wrong creek.
I've rewritten some interfaces and implementations from using nested locking to non-nested, and they became easier to use and much faster.
Not saying there's never a place for them, but I avoid nested locking like the plague.