Calling empty() in watchbroadcast methods was trying to lock the rwmutex when it was already held. Fixes #6937