Функция с volatile не мной написана, но зачем могу объянить. Когда
происходит исключение и управление передаётся в эту функцию - код в
ней зацикливается. Так как переменная volatile, то оптимизатор её
не выкинул и значение можно отладчиком изменить и выйти из этого
цикла. Зачем и куда автор так и не объяснил, но код это позволяет.
Не "вдруг из прерывания", а отладчиком.