Я бы попробовал разные подходы в следующем порядке:
-Первый, проверьте код на наличие нарушений безопасности потоков, убедитесь, что ваши критические области не вызывают другие функции, которые, в свою очередь, попытаются заблокировать критическую область.
-Используйте любой инструмент, который вы можете использовать для визуализации активности потока, я использую собственный perl-скрипт, который анализирует журнал ОС, который мы сделали, и отображает все переключатели контекста и показывает, когда поток получает приоритет.
-Если вы не можете найти хороший инструмент, зайдите в журнал, чтобы увидеть последние потоки, которые работали до возникновения тупика. Это даст вам представление о том, где проблема может быть вызвана, это поможет, если у механизмов блокировки есть уникальные имена, например, если у объекта есть собственный поток, создайте выделенный семафор или мьютекс только для управления этим потоком.
Надеюсь, это поможет. Удачи!