Ваш вопрос на самом деле не связан с C ++, а скорее является общей проблемой многопоточности тупика.
Когда ваша программа работает, получите pid, а затем в другом xterm (или что вы используете) вы запускаете pstack pid
и проверяете, все ли потоки ожидают освобождения мьютекса. Обычно это довольно хороший показатель тупика.