| RSS



Меню

Bookmark and Share


Статистика
Ваш IP: 18.118.184.25
Вы используете: v





Сейчас на сайте:

Тех поддержка ->

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 php libc rand() эксплоит Windows Server 2008 FreeBSD Jail Elastix QIP Virtual chroot Limit kernel proc sysctl Tune freeBSD bridge Boot LiveCD Disk Bluetooth GEO game DirectX emulator Python Shell червь Conficker вирус троян лаборатория касперского пиратство Apple iPhone Microsoft twitter социальная сеть анонимность лицензия Open Source уязвимость MySQL база данных Закон Франция Пират Skype мобильный Deutsche Telekom хакер trend micro кибератака Германия робот Персональные данные Ноутбук Интернет китай цензура windows vista acer Linux патент браузер Firefox Internet Explorer Opera Safari Intel Oracle патч Банкомат IBM США Dell Ford MAC контроль Internet кибербезопасность приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 взлом Пентагон Украина Facebook Cisco Cloud Windows XP нетбук торрент музыка Биометрический Nokia Hardware Manager ФБР IP-адрес sms RSA java Google Captcha Symantec Спам Антивирус тест Anti-Malware Windows 7 операционная система windows провайдер авторское право rapidshare UNIX свиной грипп шантаж Дети ipod копирайт McAfee HTTPS icann студент Норвегия New York Times YouTube Warner Music КНДР Ubuntu AMD ATI касперский Россия РФ сервер хостинг Wi-Fi суд пароль блог фишинг одноклассники Медведев контрафакт мошенник sony Gps по JavaScript Хакеры Yahoo фас компьютер софт Минкомсвязи Сбой мошенничество Доктор ВЕб Вконтакте ie8 исходный код МВД фильтр порнография свобода слова казахстан Autodesk сисадмин Gmail кредитная карта LiveJournal шифрование Deep Purple банк HTML5 Нанотехнологии wikipedia выборы DNS bind KaZaA Android Basic атака Mac OS X домен ФСБ прокуратура уголовное дело ICQ Sophos Google Voice ошибка DARPA военные сайт турция конференция спамер Полиция Koobface Великобритания IRC белоруссия Грузия Bittorrent Европа Dr.WEB Linux Mint Билл Гейтс спецслужбы Royal Bank of Scotland смартфон Canonical F-Secure Symbian фильм Microsoft Office Новая Зеландия Adobe Австралия IDC Internet Explorer 9 iPad Ирландия поиск GOOGLE EARTH МТС Реклама слежка Mandriva BSD Zeus личные данные eset avast Avira G Data Software защита Defcon виртуализация dll LibreOffice Черный список BlackBerry индия Москва DVD социальные сети flash player paypal BitDefender email сертификат honda MasterCard Anonymous технологии IPv6 Ассанж Оптоволокно передача данных арест Fedora Samsung Иск Apache учетная запись iTunes исследование Cert Санкт-Петербург McDonald's SOPA PIPA Bioshock Infinite: Burial at Sea - ico Megaupload CES hotfile отчет приложение Инвестиции платформа DRM DDoS-атака роскомнадзор

Главная » Статьи » Общие Статьи

История случаных падений IE и WMP

Факт сбоя в работе сразу нескольких программ насторожил меня уже по-настоящему. Поскольку ЦП в моей системе работал на повышенных частотах, я начал грешить на перегрев процессора и другие побочные эффекты разгона, после чего с великой неохотой вернул множитель ЦП к заводским значениям. Сделав это я с ужасом убедился в том, что глюки не прекратились. Следующим пунктом в программе подозрений значились дефекты RAM, но выявить проблему при помощи Windows Vista Memory Diagnostic мне так и не удалось.

Поэтому, когда выяснилось, что железо здесь не причем, я подумал, что стоит взглянуть на дамп процесса, который приводит к сбою, чтобы определить в чем же причина бага. И я стал его искать. Встроенное в Windows XP системное приложение Application Error Reporting, прежде чем выдать сообщение об аварийном прекращении работы приложения, всегда создает дамп процесса, местоположение которого можно посмотреть, кликнув по ссылке на диалоговом окне сообщения и изучив техническую информацию, содержащуюся в отчете:

Аналогичное окно в Windows Vista, к сожалению, уже не предлагает ознакомиться с детальной информацией, связанной с вылетом и не делает снимка аварийного приложения, если не получит на это соответствующего запроса службы Microsoft Windows Error Reporting (WER). К счастью, WerFault, процесс, который отвечает за вывод на экран сообщения об ошибке, сохраняет детали о сбойном процессе до тех пор, пока ты не нажмешь на кнопку Close Program, что, в принципе, позволяет воспользоваться отладчиком для изучения этого процесса. Доказательство того, что за вывод сообщения о сбое в Windows Media Player отвечает именно WerFault, приведено на расположенном ниже скриншоте из Process Explorer:

Когда случился очередной вылет приложения, я запустил WinDbg, отладчик Windows из пакета утилит Debugging Tools for Windows, который можно бесплатно скачать с сайта Microsoft. Убедившись, что в диалоговом окне Symbol File Path этого отладчика установлен правильный путь к публичному серверу символов Microsoft (к примеру, вот такой: srv*c:\symbols*http://msdl.microsoft.com/download/symbols), я перешел к меню File и выбрал пункт под названием "Attach to a Process...":

Выбор этого пункта в WinDbg приводит к диалоговому окну выбора процесса, приведенный в котором список я и начал пролистывать для того, чтобы найти вылетающий процесс. Обнаружив его, я открыл этот процесс в WinDbg и встретил все тот же интерфейс, который можно увидеть в Windows XP при просмотре сохраненного дампа, только в WinDbg есть еще дополнительная возможность исполнения встроенной команды !analyze, которую можно выполнить во время загрузки сбойного процесса. Эта команда запускает эвристический анализ при помощи которого можно попытаться определить причину сбоя. Хотя, если ты прикрепляешь отладчик к какому-то определенному процессу, эта функция тебе вряд ли будет полезна, поскольку расскажет о том, что ты уже и так знаешь.

Для поиска возможной причины неисправности требуется просмотр стека каждого потока в процессе, поэтому я открыл необходимые мне соответствующие диалоговые окна Processes and Threads и Call Stack в меню View:

Изучение потоков я начал с выбора первого пункта в списке диалогов:

Окно WinDbg во время запроса обычно становится серым и отображает слово "Busy", поскольку в этот момент WinDbg получает информацию от службы символов, после чего появляется окно стека, в котором содержится указание на процесс, в рамках которого на момент сбоя был запущен выбранный поток. Я по очереди проверил стек каждого потока, переключаясь между ними при помощи стрелок и клавиши Enter. Целью моей охоты было найти процесс или функцию, в названии которых содержатся такие слова, как "exception" или "fault". И ближе к самому концу списка такой процесс мне все-таки удалось обнаружить:

Я заметил, что верхняя часть списка полна функций, содержащих в своем названии слово "Exception". Просматривая список по направлению к началу стека, я добрался и до причины проблемы, ею оказалась функция в Nvappfilter вызываемая из Kernel32.dll под названием HeapFree. Исключение при выполнении какой-нибудь типичной операции в HeapFree означало либо обращение к фиктивному адресу кучи, либо то, что во время выполнения функции куча уже была повреждена. Можно было бы предположить, что источником вызова процедуры служит системная DLL Windows, однако WinDbg не смог предоставить информацию об именах функций с сервера символов Microsoft, и я подумал, что это, вероятнее всего, какая-то сторонняя DLL. Впоследствии мне удалось подтвердить свою догадку при помощи команды lm (list module), позволившей просмотреть информацию о версии.

Nvappfilter теперь претендовал на роль главного подозреваемого, но прямых доказательств его вины у меня все еще не было. Я продолжил работать на компьютере и проделывал аналогичные вышеописанным мероприятия каждый раз, когда происходили сбои. Обнаружилось, что стек потоков практически идентичен вне зависимости от того, какое приложение выпадает (IE, WMP или игра) и всегда содержит Nvappfilter, запускающую HeapFree. Исчерпывающих улик все еще не было, но связь между сбоями и этой dll прослеживалась совершенно четко.

Выявив ее, я решил проверить возможное наличие обновлений для Nvappfilter, но у меня не было четкого представления о том, к какому набору программных средств она принадлежит. Введя ее имя и воспользовавшись интернет-поиском, я установил, что данная библиотека является частью пакета FirstPacket, разработанного nVidia для того, чтобы поднять приоритет обработки данных, создаваемых играми. Этот пакет входит в состав программного обеспечения для материнских плат на базе nForce:

Я перешел на сайт nVidia и скачал самую свежую версию драйверов для nForce, но обновить таким образом Nvappfilter.dll мне не удалось, и вылеты никуда не исчезли.

Панель управления nVidia не предлагает никаких инструментов, при помощи которых можно было бы остановить загрузку Nvappfilter, поэтому единственной возможностью сделать это было отключение данной dll вручную. Поскольку функции пакета FirstPacket мне были не нужны, а его отсутствие не причинило бы мне неудобств, я взялся за изучение того, за счет чего этот программный пакет подгружает себя в системе. Для того, чтобы это выяснить, я воспользовался Autoruns, с помощью которой и обнаружил ссылки на 32-х и 64-битные версии Nvappfilter в разделе Winsock Layered Service Provider (LSP):

Я удалил все записи, связанные с Nvappfilter, перезагрузил машину, и после этого уже не испытывал никаких проблем с вылетами. Во время написания данной статьи я еще раз проверил пакет драйверов для nForce на предмет наличия в них обновленных версий Nvappfilter. Насколько мне удалось понять, последние версии этого ПО вообще не содержат Nvappfilter или каких-то других компонентов Winsock LSP, поэтому, похоже, проблема больше не актуальна.

В заключение отмечу, что после проведения расследования я начал пользоваться функциональностью, предлагаемой пакетом SP1 для Vista. Она позволяет мне делать автоматические дампы любого сбоя, с которым мне приходится сталкиваться. Создав в реестре ключ HKLM\Software\Microsoft\Windows\Windows Error Reporting\LocalDumps, при помощи WerFault у тебя всегда будет возможность сохранить дамп. Путь сохранения по умолчанию - %LOCALAPPDATA%\Crashdumps, однако его можно изменить, внеся соответствующие исправления в Реестре. Также можно управлять и максимальным числом сохраняемых дампов.

Источник: http://blogs.technet.com/markrussinovich/

Категория: Общие Статьи | Добавил: aka_kludge (12.12.2008)
Просмотров: 2296 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

07:53
Обновить


Пользователи
aka_kludge
qwerty
LeadyTOR
aka_Atlantis
AdHErENt
mAss
Sissutr
hiss
DrBio
tHick

Поиск


Copyright tHR - TeAM 2025 г. admin: aka_kludge (ICQ:334449009) Moderator's: LeadyTOR, ... Яндекс.Метрика