The analyzer has detected an incorrect use of a mutex wrapper (std::unique_lock, etc).
Consider the following example:
std::unique_lock<std::mutex> lck; lck.lock();
Here, in the second line, an exception 'std::system_error' will be thrown since there is no mutex associated with the wrapper. It should either be passed in the constructor:
std::unique_lock<std::mutex> lck(m, std::defer_lock); lck.lock();
or initialized by the 'swap()' method:
std::unique_lock<std::mutex> lck_global(mtx, std::defer_lock); .... std::unique_lock<std::mutex> lck; lck.swap(lck_global); lck.lock();
This diagnostic also detects cases where a critical section is declared but the mutex is not locked for some reason:
std::unique_lock<std::mutex> lck(m, std::defer_lock); //lck.lock();
This diagnostic is classified as: