Ошибка 0x0000000F: SPIN_LOCK_ALREADY_OWNED

1 ответ(ов) в теме
moto
не в сети 1 час
На сайте с 12.03.2017
Администратор
Тем 3411
Сообщения 13605
0
14:23

0x0000000F указывает, что запрос на spin-блокировку инициировался, когда данная блокировка уже запущена.

Как правило, эта ошибка вызвана рекурсивным запросом на spin-блокировку. Например, когда spin-блокировка была получена потоком, и затем тот же самый поток вызывает функцию, которая также пытается получить spin-блокировку. Вторая попытка получить spin-блокировку не блокируется, потому что это привело бы к взаимоблокировке. Если вызовы будут выполнены больше чем на одном процессоре, то один процессор будет блокирован, пока другой процессор не отпустит блокировку.

Эта ошибка может также произойти без явной рекурсии, когда всем потокам и всем spin-блокировкам присваиваются IRQL. IRQL spin-блокировки всегда больше или равен уровню DPC, но это не учитывается для потоков. Однако, IRQL потока, который содержит spin-блокировку, должен поддержать большее или равное значение с IRQL spin-блокировки. При уменьшении IRQL потока ниже уровня IRQL spin-блокировки, которую поток содержит, позволяет другому потоку выполнятся процессором. Этот новый поток может попытаться получить ту же самую spin-блокировку.

Убедитесь, что Вы рекурсивно не получаете блокировку. И, для потоков, которые содержат spin-блокировку, убедитесь, что Вы не уменьшаете IRQL потока к уровню ниже IRQL spin-блокировки, которую он содержит.

Для устранения ошибки воспользуйтесь темой Как устранить синий экран смерти

Редакции сообщения
0

Ваше имя *

Ваш E-mail *

не публикуется

Текст сообщения *