Какое-то время я получаю прерывистый сбой 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 вообще не будет работать.)

