Путеводитель по сайту

Vista: дело о неслучайном сбое веб-браузера Internet Explorer 8

Netler.ru - Слово о ПК и PC, или Хроника рефлексирующего сисадмина

RSS: новые статьи сайта «Слово»·RSS: новые статьи сайта «Слово»

 

·Статьи

·О ПК и PC

·Страничка Настроения

 

·Find us on Facebook

·ВКонтакте

 

·SAPE.RU – покупка и продажа ссылок





 

 

 

 

***

…Как известно, веб-браузер Internet Explorer 8 использует многопроцессную модель, в которой различные вкладки располагаются в разных процессах, – это сделано для того, чтобы «падение» одной вкладки не вызывало «падение» других. Но всё же «падения» браузера бывают, и весьма часто!..

 

В течение длительного времени автора статьи «доставала» проблема, которую с наскока решить не удавалось.

А дело было вот в чем: при закрытии браузера Internet Explorer 8 (ноутбук Acer; 32-битная Windows Vista SP2; ОЗУ – 2,5ГБ; процессор Intel Celeron 1,73ГГц) зачастую – без явной причины! – появлялось окно Microsoft Windows с сообщением «Прекращена работа Interner Explorer. При следующем подключении к Интернету Windows может провести поиск способа устранения этой ошибки»:

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Доступные опции:

Проверить наличие способа исправления ошибки в Интернете позднее и закрыть программу;

Закрыть программу.

 

Выбор первой опции, а также обращение к Базе Знаний Майкрософт были безрезультатными.

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

При нажатии на кнопку Показать подробности проблемы (в окне с сообщением об ошибке) можно было ознакомиться со следующей информацией:

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Как правило, в сообщениях об ошибке был указан «модуль с ошибкой» mshtml.dll (изредка – ntdll.dll).

 

Начинаем изучение проблемы с «ошибочного» модуля.

Файл mshtml.dll (дисковый адрес – \Windows\System32\) – это Средство просмотра HTML Microsoft.

Попытка перерегистрировать модуль mshtml.dll (с помощью сервера регистрации regsvr32.exe – команда regsvr32 /i mshtml.dll) была безрезультатной:

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Файл ntdll.dll (дисковый адрес – \Windows\System32\) – это Системная библиотека NT (является прослойкой между Win32 API и NT Native API; вызывает прерывания при обращении к ядру системы – через ntdll.dll – других библиотек). Если бы сбоил ntdll.dll, то многие приложения при работе «падали» бы, – но сбой наблюдался только при завершении (именно при завершении!) работы Internet Explorer 8.

 

Тестирование оперативной памяти показало, что она исправна.

Проверка системных файлов Windows (с помощью команды SFC /SCANNOW) также не выявила поврежденных (или измененных) файлов.

 

Ну что ж, задействуем «тяжелую артиллерию» – утилиту Process Explorer и отладчик WinDbg.

Запускаем Process Explorer, находим процесс WerFault.exe:

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Следует отметить, что когда происходит сбой какого-либо процесса, служба Windows Error Reporting (WER) запускает – в сеансе ошибочного процесса – свой процесс (WerFault.exe), передавая идентификатор (PID) сбойного процесса в командную строку WerFault (при этом отображается диалоговое окно с сообщением об ошибке).

 

Для открытия диалогового окна свойств процесса надо выделить его и выбрать меню Process –> Properties… (или дважды нажать процесс левой кнопкой мыши, или нажать правой кнопкой мыши и выбрать из контекстного меню Properties…).

 

Командная строка (Command line) процесса WerFault.exe содержит PID сбойного процесса Internet Explorer 8 (в рассматриваемом случае этот идентификатор можно было узнать и в основном окне Process Explorer):

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Узнав PID сбойного процесса (4776), запускаем отладчик WinDbg.

Для поиска возможных причин сбоя с помощью отладчика нужно просматривать стек каждого потока в процессе, поэтому с помощью меню View открываем окна Processes and Threads (можно для вызова окна нажать Alt+9) и Call Stack (Alt+6). Для удобства пользования располагаем окна рядом.

 

С помощью меню File –> Attach to a Process… (или с помощью клавиши F6) открываем диалоговое окно Attach to a Process:

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Находим (по идентификатору 4776) сбойный процесс, к которому необходимо подключиться, выделяем его (в текстовом поле Process ID должен отобразиться идентификатор процесса) –> OK.

 

Сначала пробуем использовать встроенную функцию эвристического анализа: в командной строке WinDbg вводим команду !analyze.

 

Увы, использование эвристики не помогло, в разных сбойных случаях она показывала, что возможный виновник сбоев то файл ntdll.dll

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

то оперативная память

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Будем искать сбойный поток вручную.

В окне Processes and Threads поочередно выбираем каждый поток и нажимаем Enter (или дважды нажимаем его левой кнопкой мыши):

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

В окне Call Stack просматриваем стек, отыскивая функции, в именах которых присутствуют слова exception, fault, unhandled.

 

Наконец-то в окне стека вызовов обнаружено искомое:

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Но – увы! – dll-библиотеки, указанные в стеке вызовов сбойного процесса, являются системными файлами Windows: ntdll.dll (о котором речь уже шла выше) и kernel32.dll (Библиотека клиента Windows NT BASE API; дисковый адрес – \Windows\System32\).

 

Поскольку в стеке вызовов сбойного процесса наличествует строка WARNING: Stack unwind information not available. Following frames may be wrong, используем функцию Display Words and Symbols для поиска пропущенных кадров стека с адресами функций. Так как операционная система – 32-разрядная, используем dds-версию этой функции. В командной строке отладчика вводим dds, а в качестве адреса (предоставляемого команде как стартовая точка) берем адрес фрейма стека, который расположен прямо над «потерянным» адресом (0568f864):

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Выявить виновника сбоев не удалось, – вероятно, обратные адреса вызванных сбойным потоком функций были затерты ошибкой, вызвавшей сбой…

 

Напоследок просматриваем список загруженных модулей. Для этого воспользуемся командой lm (List Modules):

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Всего на момент сбоя было загружено 130 (!) модулей (выгружено к моменту сбоя 12).

Теоретически любой из 130 загруженных модулей мог быть причиной сбоя…

Да, как говорится, есть повод задуматься!..

 

Конечно, продолжая дальнейшую – скрупулезную! – работу с отладчиком, в конце концов виновника сбоев удалось бы выявить.

Как говорится, мы победим, но мы пойдем другим путем – более простым.

 

***

А вот и он – простейший путь решения проблемы!

Предположив, что причина сбоев кроется всё-таки не в самом IE8 (следует отметить, что, например, на ноутбуке Asus с 64-битной Windows 7 браузер Internet Explorer 8 работал стабильно, без «падений»), а в одной из надстроек, которыми он буквально «увешан», открываем окно Свойства обозревателя (кстати, это диалоговое окно можно вызвать как в самом веб-браузере – с помощью меню Сервис –> Свойства обозревателя, так и с помощью Пуск –> Панель управления –> Свойства обозревателя);

– на вкладке Программы нажимаем кнопку Настроить надстройки;

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

– в диалоговом окне Надстройки выбираем типы надстроек Панели инструментов и расширения;

– в прокручиваемом списке проверяем все надстройки, загруженные на текущий момент;

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

– интуитивно решено отключить Adobe PDF Link HelperОбъект модуля поддержки обозревателя (\Program Files\Common Files\Adobe\Acrobat\ActiveX\AcroIEHelperShim.dll) –> Отключить –> Закрыть.

 

Дело о неслучайном сбое веб-браузера Internet Explorer 8

 

Проверяем работу Internet Explorer 8.

Сбой устранен! Дело о неслучайном сбое веб-браузера закрыто.

 

Следующим этапом станет тщательная – профилактическая! – работа с другими надстройками IE8

 

***

В заключение, хочу поблагодарить всех, без кого эта статья не была бы написана:

Билла Гейтса, который «заварил всю эту кашу» (но которому мы за это безмерно благодарны!);

– корпорацию Microsoft (во-первых, за глюки ее программного обеспечения, отсутствие которых многих айтишников оставило бы без работы; во-вторых, за прекрасный программный пакет – иногда мне кажется, что во всём ПО Micosoft не глючит только он! – Debugging Tools for Windows, которым любой желающий программист/разработчик/сисадмин может воспользоваться бесплатно);

– корпорацию Adobe Systems (глюки ее программного обеспечения тоже дают хлеб насущный многим айтишникам);

Марка Руссиновича – за его ценные советы и бесценные утилиты;

– и многих-многих других (в том числе тех, кто будет читать эту статью!).

 

Да пребудет с нами Сила!..

 

Валерий Сидоров

 

 

***

Вирусы vs. антивирусы

Apple = iСтив + iPod + iPhone + iPad + iTunes + iMac + …

Apps for iPad, iPhone, iPod touch…

Дело о:

…16-петабайтном винчестере…

Error 6118, или Дело о загадочном сетевом сбое

…драйвере atikmpag.sys, или Предыдущее завершение работы системы было неожиданным…

…зависаниях плагина Shockwave Flash в браузере Mozilla Firefox

…загадочном сбое Media Player Classic (STOP: 0xc000021a)

…загадочном сбое Microsoft Office: «Идет подготовка к установке…»

…загадочном сбое Microsoft Office Excel

…загадочном сбое Microsoft Office Excel: stdole32.tlb

…загадочном сбое Microsoft Office Word…

…загадочном сбое UPS, или Добросовестность уборщицы – первый враг сисадмина…

…загадочном сбое USB-модема "Билайн"

…загадочном сбое Windows (STOP: 0x0000007e)

…загадочном сбое Windows (STOP: 0xc000021a)

…загадочном сбое Windows: «Файл или каталог поврежден и не может быть прочитан…»

…загадочном сбое браузера Mozilla Firefox

…загадочном сбое видеокарты

…загадочном сбое ноутбука ASUS

…загадочном сбое ПК: Initializing USB Controllers

…загадочном сбое: «Точка входа в процедуру не найдена в библиотеке kernel32.dll»

…загадочных сбоях Windows (STOP: 0x10000050 и 0x1000007e)

…засбоившем радиомодуле ноутбука Toshiba

…капризах Xerox WorkCentre 5016, или Как устранить ошибку C0?

Месть "Паука", или Дело о загадочном сбое Windows (STOP: 0x000000D1)

…неудаляемой папке

…об очередном загадочном сбое веб-браузера Mozilla Firefox

…Ошибка при удалении файла или папки

…повреждённом дистрибутиве антивируса Dr.Web

…"призрачном" медиафайле, или Ошибка 0x800705570

…самопроизвольном закрытии файлов и папок

…странных перезагрузках ПК…

…таинственном исчезновении контекстного меню Создать текстовый документ

…таинственном проникновении Гали на панель Проводника Windows

…таинственном сбое кодировки RSS-канала

 

 

 

 

 

 

 

Путеводитель по сайту


18+

© Сидоров В.В. 2014. All rights reserved.

При использовании материалов сайта «Слово» прошу указывать источник информации!