Rambler's Top100
Генеральный информационный спонсор
 
             
Новости Публикации Литература НАСТ России Законы Ссылки Каталог фирм
Paintball Фильмы Оружие Инфозащита Приколы Тесты О проекте

 [Гостевая]
[Пишите нам]
[Главная]


27 декабря 2004 г.


НИИ СпецЛаб: Обезврежена ошибка

      Недокументированная проблема Windows-программирования. Программистов НИИ СпецЛаб уже трудно чем-то удивить, за долгий опыт работы повидали всякого, но ЭТА проблема заставила понервничать все предприятие.

     Технология Direct X, использованная в восьмой версии цифровой системы видеонаблюдения GOAL на аппаратном уровне, безусловно является серьезным достижением персонального компьютера по работе с ВИДЕО. Применение ее дало ощутимый результат и резко разгрузило ресурсы основного процессора.

     После большого периода испытаний казалось, что решения нет, и что технология Direct X - сырая сама по себе. Крайне редко, не на всех компьютерах, не во всех режимах, но постоянно проявлялась ошибка, приводившая к зависанию компьютера. Месяцами она могла не выдавать себя. Для ее отслеживания были применены все средства от самых современных отладчиков до самых опытных программистов и тестеров, "перекопана" вся информация последних лет по этой технологии и Windows-программированию. Одних только специализированных программных средств отладки было закуплено на 30 000 долларов. Но…

     Под угрозой срыва был серьезный коммерческий продукт - GOALv8. Снимать его с рельсов аппаратных ускорителей ВИДЕО, тем самым уменьшая мощность, крайне не хотелось. Ценой неимоверных усилий и серьезных исследований удалось найти недокументированную проблему драйвера Direct X.

     Дальше для программистов:
     В очень редких случаях программы, использующие аппаратно эту технологию, неожиданно завершают работу с катастрофической ошибкой D1 - DRIVER_IRQL_NOT_LESS_OR_EQUAL. Эта ошибка возникает, когда драйвер пытается обратиться к выгружаемой странице памяти (или по неверному адресу) при слишком большом уровне прерываний. В драйвере не была учтена ситуация, когда после обработки прерывания отложенная процедура (служит для завершения обработки прерывания на более низком уровне запроса прерываний) вызывалась не сразу, а с некоторой задержкой. Эта задержка в обработке, как выяснилось, связана с тем, что отложенные процедуры имеют свои приоритеты и процедуры с низким приоритетом, как было в ошибочном драйвере, и в крайне редких случаях обрабатываются не сразу. Увеличение приоритета отложенной процедуры исправляет ситуацию.

     Вот такая мелочь, неописанная ни в каких известных источниках по программированию, может испортить жизнь серьезной компании.


Rambler's Top100   Sec.ru - Весь Российский рынок безопасности  
 

© Copyright 2000-2003 www.sec4all.net