Подвисание аппаратного ключа или драйвера (деадлок)
Добрый день.
Была замечена ситуация, когда защищенное ПО подвисало при запуске и не реагировало ни на что, кроме извлечения аппаратного ключа. Подобная ситуация возникает, если защищенное ПО не запускается длительное время. Т.е. компьютер работает круглосуточно, при этом к нему постоянно подключен аппаратный ключ. Спустя несколько дней/недель такой работы запускается защищенное ПО - и зависает. Это не 100%-й рецепт повторения проблемы, но она была замечена именно подобным образом. Возможно проблема повторится и при других обстоятельствах.
С помощью логов, тестов и отладки было выяснено, что ПО уходит в себя на вызове Guardant API ::GrdLogin() и не выходит от туда, пока не извлечешь ключ. После извлечения ключа вызов возвращает ошибку, что подходящий ключ не найден. После повторного подключения ключа к компьютеру ПО работает штатно.
В одной из подобных ситуаций была запущена диагностика ключей. Программа диагностики подключенного ключа не увидела, более того, она также перестала отвечать. Скриншот ниже. Программа программирования ключей также зависла не увидев подключенного ключа. После извлечения ключа программа программирования ожила и возобновила работу, а диагностика продолжала висеть и ее процесс пришлось завершать принудительно.
Используемый ключ - Guardant Code.
Сталкивались ли с подобной проблемой ранее?
Что можно предпринять, чтобы устранить эту проблему?