I received that error:
pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->_data._owner == 0′ failed.
And I cannot found any cause of that. However I’m not sure about the following piece of code:
Declarations:
std::mutex lock;
std::condition_variable cond;
Sequence of locks & unlocks:
std::unique_lock<std::mutex> lk(lock);
cond.wait(lk);
lock.unlock();
If I remove this sequence – everything works fine, but without any protection. I’m not sure if I use unique_lock properly.
std::unique_lockand other locks acquire a mutex in the constructor and release it in the destructor.You called
lock.unlock()in your code manually, making it called effectively twice.After removing that statement your code should work properly.