Какое-то время я получаю прерывистый сбой SVCHOST.EXE
при загрузке в Windows XP. Поскольку он прерывистый, я не могу его надежно воспроизвести и не могу сузить, когда он запущен, и, поскольку это SVCHOST
, я не могу определить, какая служба вызывает сбой, потому что диалог создается CSRSS.EXE
, а не экземплярами. SVCHOST.EXE
.
Одна вещь, которую я точно знаю, это то, что если я закрываю нижеприведенное диалоговое окно, которое появляется, когда это происходит, то вся система полностью зависает, но если я оставляю диалоговое окно в покое, я могу продолжать работать и использовать ОС как обычно, однако при При закрытии (в это время диалог неизбежно закрывается) система зависает, что приводит к необходимому сбросу.
Я воспользовался предложением Anonymous Coward о настройке каждого сервиса на использование своего собственного экземпляра SVCHOST
вместо общего и обнаружил, к моему удивлению, что процесс сбоя не был одним из экземпляров SVCHOST
. Это был CSRSS.EXE
.
Теперь мне остается выяснить, почему иногда происходит сбой CSRSS
(подавляющее большинство запросов, включающих имена файлов, просто возвращают эти бесполезные страницы базового анализа), но я не уверен, как отладить такую неотъемлемую часть системы, если не считать грязный отладчик ядра. (Я укажу, что система не BSOD, поэтому дамп не генерируется.)
Одна вещь не в том, что адреса кажутся всегда одинаковыми. Это происходило около десятка раз или около того, и ошибочная инструкция всегда находится в 0x76dea383
которая пытается прочитать память в 0x00000000
. Очевидно, что целевой адрес памяти бесполезен, но я уверен, что должен быть способ как-то использовать исходный адрес.
Когда это происходит, я пытался закрыть все процессы и остановить все возможные службы. К сожалению, это не помогает сузить причину, потому что диалоговое окно остается отображаемым, потому что оно создано csrss
которое не может быть остановлено без полного удаления всей ОС.
Старая информация:
Я попытался выяснить, какая служба отвечает без успеха. Например, в прошлый раз, когда это произошло, я остановил все возможные службы (и несколько, которые обычно не возможны), закрыл каждое приложение, убил Explorer и, по сути, сократил систему до минимума (было возможно, осталось 10 процессов, используя ~ 111 МБ ОЗУ и 0% ЦП), но он все еще зависал после закрытия диалога. Это заставляет меня подозревать, что это одна из важнейших системных служб, хотя, если бы это было так, то почему система продолжала бы работать в это время?
Кто-нибудь, как я могу отладить это? Например, кто-нибудь может придумать способ определить экземпляр SVCHOST
связанный с ошибкой? Я проверил Журнал событий и Обозреватель процессов, но не смог найти ничего, что помогло бы его точно определить. Что я могу сделать с адресом памяти?
(Да, я прогуглил это и нашел множество упоминаний о службе Windows Update, но это не так, потому что WUAUSVC
и BITS
по умолчанию отключены. И нет, я не могу выполнить метод тестирования « отключить все службы и включить один за другим», потому что, если это одна из важнейших системных служб, Windows вообще не будет работать.)