Per un po 'di tempo, ho avuto un arresto intermittente SVCHOST.EXE
all'avvio in Windows XP. Poiché è intermittente, non riesco a riprodurlo in modo affidabile, né posso restringere quando è stato avviato e, poiché lo è SVCHOST
, non riesco a determinare quale servizio è quello che si arresta in modo anomalo perché la finestra di dialogo è stata creata CSRSS.EXE
, non una delle istanze di SVCHOST.EXE
.
Una cosa che so per certo è che se chiudo la finestra di dialogo sottostante che viene visualizzata quando si verifica, l'intero sistema si blocca completamente, ma se lascio la finestra di dialogo da sola, posso continuare a lavorare e utilizzare il sistema operativo normalmente, tuttavia su chiudendo (a quel punto la finestra di dialogo viene inevitabilmente chiusa), il sistema si blocca, con conseguente ripristino necessario.
Ho usato il suggerimento di Anonymous Coward di impostare ciascun servizio in modo da utilizzare la propria istanza SVCHOST
anziché una condivisa e ho scoperto con mia sorpresa che il processo di arresto anomalo non era una delle SVCHOST
istanze. Lo è stato CSRSS.EXE
.
Ora sono rimasto a cercare di capire perché a CSRSS
volte gli arresti anomali (la stragrande maggioranza delle ricerche che includono nomi di file restituiscono solo quelle pagine di analisi di base senza valore), ma non sono sicuro di come eseguire il debug di una parte così integrale del sistema a corto di un disordine debugger del kernel. (Sottolineerò che il sistema non utilizza BSOD, quindi non viene generato alcun dump.)
Una cosa di no è che gli indirizzi sembrano essere sempre gli stessi. È successo circa una dozzina di volte e l'istruzione offensiva è sempre 0x76dea383
quella che cerca di leggere la memoria 0x00000000
. Ovviamente l'indirizzo di memoria di destinazione è inutile, ma sono sicuro che ci deve essere un modo per utilizzare l'indirizzo di origine in qualche modo.
Quello che ho provato in questo caso è chiudere ogni processo e interrompere ogni servizio possibile. Sfortunatamente, ciò non aiuta a restringere la causa perché la finestra di dialogo rimane visualizzata perché è stata creata dalla csrss
quale non può essere arrestata senza rimuovere completamente l'intero sistema operativo.
Informazioni obsolete:
Ho provato a capire quale servizio è responsabile senza successo. Ad esempio, l'ultima volta che è successo, ho fermato ogni singolo servizio che era possibile (e alcuni che non sono normalmente possibili), ho chiuso ogni singola app, ho ucciso Explorer e praticamente ridotto il sistema al minimo indispensabile (c'erano forse sono rimasti 10 processi, usando ~ 111 MB di RAM e CPU allo 0%), ma è rimasto bloccato una volta chiusa la finestra di dialogo. Questo mi fa sospettare che si tratti di uno dei servizi di sistema critici, anche se in tal caso, perché il sistema dovrebbe continuare a funzionare nel frattempo?
Qualcuno può debug questo? Ad esempio, qualcuno può pensare a un modo per determinare l'istanza SVCHOST
associata all'errore? Ho controllato il registro eventi e Process Explorer ma non sono riuscito a trovare nulla per aiutarlo a individuarlo. C'è qualcosa che posso fare con l'indirizzo di memoria?
(Sì, ho cercato su Google e ho trovato numerose menzioni del servizio Windows Update, ma non è perché WUAUSVC
e BITS
sono disabilitate per impostazione predefinita. E no, non posso fare il servizio di disabilitazione di tutti i servizi e abilita uno -un metodo di test perché se si tratta di uno dei servizi di sistema critici, Windows non funzionerà affatto.)