BSOD 0x0000000F — SPIN_LOCK_ALREADY_OWNED

rating_off-3580810rating_off-3580810rating_off-3580810rating_off-3580810rating_off-3580810 (No Ratings Yet)

0x0000000f_thumb-8559741 Данная ошибка означает, что код запросил спин блокировку в то время, когда она уже имеет владельца.

Причины

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

Также причиной ошибки может быть не только использование рекурсии. Уменьшение уровня IRQL потока ниже уровня IRQL спин блокировки, которую он удерживает, может привести к тому, что начнет выполнятся другой поток, а первый будет вытеснен. Если другой поток попытается получить эту же спин блокировку возникнет генерация данного исключения.

Способы устранения

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

Автор

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: