Н.Г. Ершов
,
Н.Ю. Рязанова
6
Рис. 3.
Дамп, формируемый Driver Verifier
Для выявления ошибок такого рода рекомендуется, помимо ис-
пользования Driver Verifier, анализировать также стек ядра. Инфор-
мация, содержащаяся в нем, демонстрирует реакцию системы на со-
бытия в коде, т. е. раскрывает механизм верификации и выявляет
этапы краха системы.
Для анализа второй из перечисленных проблем — несоблюдения
иерархии захвата блокировок — написана функция (рис. 4), моделиру-
ющая данную ситуацию в простейшем виде. В функции инициализиру-
ется два объекта спин-блокировок. Сначала захватываются оба объекта,
затем один из них освобождается, а другой повторно захватывается.
Тем самым нарушается иерархия блокировок (спин-блокировки в Win-
dows не рекурсивны). При попытке повторного захвата спин-
блокировки операционная система зависает и организует крах.
Детальный анализ данной проблемы очень важен, так как попа-
дание системы в тупик приводит к крайне разрушительным послед-
ствиям. С целью выяснения реакции защитных механизмов операци-
онной системы анализ проводился в двух режимах: с выключенным и
с включенным режимом контроля взаимоблокировок (deadlock detec-
tion) в Driver Verifier.