Por um tempo, tenho recebido uma falha intermitente de SVCHOST.EXE
na inicialização do Windows XP. Por ser intermitente, não posso reproduzi-lo de maneira confiável, nem posso diminuir quando foi iniciado e, como é SVCHOST
, não consigo determinar qual serviço é o único que falha porque o diálogo é criado por CSRSS.EXE
, não as instâncias de SVCHOST.EXE
.
Uma coisa que eu sei com certeza é que se eu dispensar a caixa de diálogo abaixo que aparece quando isso acontece, todo o sistema trava completamente, mas se eu deixar o diálogo sozinho, posso continuar a trabalhar e usar o sistema operacional normalmente , no entanto, ao desligar (no momento em que o diálogo é inevitavelmente fechado), o sistema trava, resultando em uma reinicialização necessária.
Eu usei a sugestão do Anonymous Coward de configurar cada serviço para usar sua própria instância de SVCHOST
em vez de uma compartilhada e descobri, para minha surpresa, que o processo de falha não era uma das SVCHOST
instâncias. Foi CSRSS.EXE
.
Agora, fico tentando descobrir por que CSRSS
falha às vezes (a grande maioria das pesquisas que incluem nomes de arquivos apenas retornam essas páginas de análise básica sem valor), mas não sei como depurar uma parte tão integral de o sistema curto de um depurador de kernel confuso. (Eu vou apontar que o sistema não faz BSOD, então não há nenhum dump gerado).
Uma coisa não é que os endereços parecem sempre ser o mesmo. Isso aconteceu cerca de uma dúzia de vezes e a instrução incorreta está sempre em 0x76dea383
, que tenta ler a memória em 0x00000000
. Obviamente, o endereço de memória de destino é inútil, mas tenho certeza que deve haver uma maneira de usar o endereço de origem de alguma forma.
O que tentei quando isso acontece é fechar todos os processos e interromper todos os serviços possíveis. Infelizmente, isso não ajuda a diminuir a causa porque a caixa de diálogo permanece sendo exibida porque foi criada por csrss
, o que não pode ser interrompido sem a necessidade de derrubar todo o sistema operacional.
Informação antiga:
Eu tentei descobrir qual serviço é responsável sem sucesso. Por exemplo, na última vez que isso aconteceu, parei todos os serviços possíveis (e alguns que normalmente não são possíveis), encerrei todos os aplicativos, acabei com o Explorer e basicamente reduzi o sistema ao mínimo (havia talvez restam 10 processos, usando ~ 111MB de RAM e 0% de CPU), mas ele ainda fica pendurado quando o diálogo é fechado. Isso me faz suspeitar que é um dos serviços críticos do sistema, embora, se fosse, por que o sistema continuaria funcionando nesse meio tempo?
Alguém de alguma maneira eu posso depurar isso? Por exemplo, alguém pode pensar em uma maneira de determinar a instância de SVCHOST
associada ao erro? Eu verifiquei o Log de Eventos e o Process Explorer, mas não encontrei nada para ajudar a localizá-lo. Existe algo que eu possa fazer com o endereço de memória?
(Sim, pesquisei isso no Google e encontrei várias menções ao serviço do Windows Update, mas não é porque WUAUSVC
e BITS
estão desabilitadas por padrão. E não, não consigo desativar o -all-services-and-enable-one-by-one método de teste, porque se for um dos serviços críticos do sistema, o Windows não será executado em todos.)