A second pass to remove use of Mutex and Condition. This removes cases where the mutex may be shared outside of the class or may be conditionally locked. With this patch applied the current remaining uses are limited to uses involving Condition and in the GDBCommunication code path where there is a helper mutex class. The third class of usage is DenseSet and DenseMap which allow the user to specify the mutex type (this may require a bit more tweak, template parameter is the approach which comes to mind).
The Condition changes will require changing TimeVal to chromo::duration, but we should be able to do that as well.
After this patch, I believe that there are only a handful of instances where we use the lldb_private::Mutex (~5) and the associated locations for Mutex::Locker.
Otherwise this is undefined behavior. Also make sure you do this check anywhere else in the patch where you do manual unlocking / locking like this.