Risoluzione avanzata dei problemi per l'ID evento 41: "Il sistema è stato riavviato senza prima arrestare correttamente"

Nota

Utenti privati: questo articolo è destinato agli addetti al supporto e ai professionisti IT. Per altre informazioni sui messaggi di errore della schermata blu, vedere Risolvere gli errori della schermata blu.

Il modo preferito per arrestare Windows consiste nel selezionare Start e quindi selezionare un'opzione per disattivare o arrestare il computer. Quando si usa questo metodo standard, il sistema operativo chiude tutti i file e notifica ai servizi e alle applicazioni in esecuzione in modo che possano scrivere eventuali dati non salvati su disco e scaricare eventuali cache attive.

Se il computer si arresta in modo imprevisto, Windows registra l'ID evento 41 alla successiva avvio del computer. Il testo dell'evento è simile alle informazioni seguenti:

Event ID: 41  
Description: The system has rebooted without cleanly shutting down first.

Questo evento indica che alcune attività impreviste hanno impedito l'arresto corretto di Windows. Tale arresto potrebbe essere causato da un'interruzione dell'alimentazione o da un errore di arresto. Se possibile, Windows registra eventuali codici di errore durante l'arresto. Durante la fase del kernel del successivo avvio di Windows, Windows verifica la presenza di questi codici e include tutti i codici esistenti nei dati dell'evento dell'ID evento 41.

EventData  
BugcheckCode 159  
BugcheckParameter1 0x3  
BugcheckParameter2 0xfffffa80029c5060  
BugcheckParameter3 0xfffff8000403d518  
BugcheckParameter4 0xfffffa800208c010  
SleepInProgress false  
PowerButtonTimestamp 0Converts to 0x9f (0x3, 0xfffffa80029c5060, 0xfffff8000403d518, 0xfffffa800208c010)  

Come usare l'ID evento 41 quando si risolve un arresto o un riavvio imprevisto

Di per sé, l'ID evento 41 potrebbe non contenere informazioni sufficienti per definire in modo esplicito ciò che si è verificato. In genere, è necessario considerare anche ciò che si verificava al momento dell'arresto imprevisto (ad esempio, l'alimentatore non è riuscito). Usare le informazioni contenute in questo articolo per identificare un approccio alla risoluzione dei problemi appropriato per le proprie circostanze:

  • Scenario 1: il computer viene riavviato a causa di un errore di arresto e l'ID evento 41 contiene un codice di errore di arresto (controllo bug)
  • Scenario 2: Il computer viene riavviato perché è stato premuto e premuto il pulsante di accensione
  • Scenario 3: il computer non risponde o si riavvia in modo casuale e l'ID evento 41 non viene registrato o la voce ID evento 41 elenca valori di codice errore pari a zero

Scenario 1: il computer viene riavviato a causa di un errore di arresto e l'ID evento 41 contiene un codice di errore di arresto (controllo bug)

Quando un computer viene arrestato o riavviato a causa di un errore di arresto, Windows include i dati sugli errori di arresto nell'ID evento 41 come parte di altri dati dell'evento. Queste informazioni includono il codice di errore Stop (detto anche codice di controllo dei bug), come illustrato nell'esempio seguente:

EventData  
BugcheckCode 159  
BugcheckParameter1 0x3  
BugcheckParameter2 0xfffffa80029c5060  
BugcheckParameter3 0xfffff8000403d518  
BugcheckParameter4 0xfffffa800208c010  

Nota

L'ID evento 41 include il codice di controllo dei bug in formato decimale. La maggior parte della documentazione che descrive i codici di controllo dei bug fa riferimento ai codici come valori esadecimali anziché come valori decimali. Per convertire il decimale in esadecimale, seguire questa procedura:

  1. Selezionare Start, digitare calc nella casella Cerca e quindi selezionare Calcolatrice.
  2. Nella finestra Calcolatrice selezionare Visualizza>programmatore.
  3. Sul lato sinistro del calcolatore verificare che Dec sia evidenziato.
  4. Usare la tastiera per immettere il valore decimale del codice di controllo dei bug.
  5. Sul lato sinistro della calcolatrice selezionare Esadecimale.
    Il valore visualizzato dal calcolatore è ora il codice esadecimale.

Quando si converte un codice di controllo dei bug in formato esadecimale, verificare che la designazione "0x" sia seguita da otto cifre, ovvero la parte del codice dopo la "x" include zeri sufficienti per compilare otto cifre. Ad esempio, 0x9F è in genere documentato come 0x0000009f e 0xA è documentato come 0x0000000A. Nel caso dei dati degli eventi di esempio in questo articolo, "159" viene convertito in 0x0000009f.

Dopo aver identificato il valore esadecimale, usare i riferimenti seguenti per continuare la risoluzione dei problemi:

Scenario 2: Il computer viene riavviato perché è stato premuto e premuto il pulsante di accensione

Poiché questo metodo di riavvio del computer interferisce con l'operazione di arresto di Windows, è consigliabile usare questo metodo solo se non sono disponibili alternative. Ad esempio, potrebbe essere necessario usare questo approccio se il computer non risponde. Quando si riavvia il computer premendo e tenendo premuto il pulsante di accensione, il computer registra un ID evento 41 che include un valore diverso da zero per la voce PowerButtonTimestamp .

<EventData>
<Data Name="BugcheckCode">0</Data>
<Data Name="BugcheckParameter1">0x0</Data>
<Data Name="BugcheckParameter2">0x0</Data>
<Data Name="BugcheckParameter3">0x0</Data>
<Data Name="BugcheckParameter4">0x0</Data>
<Data Name="SleepInProgress">0</Data>
<Data Name="PowerButtonTimestamp">131728546170882432</Data>
<Data Name="BootAppStatus">0</Data>
</EventData>

Per informazioni sulla risoluzione dei problemi relativi a un computer che non risponde, vedere La Guida di Windows. Provare a cercare assistenza usando parole chiave come "blocca", "rispondere" o "schermata vuota".

Scenario 3: il computer non risponde o si riavvia in modo casuale e l'ID evento 41 non viene registrato o la voce ID evento 41 o elenca valori di codice errore pari a zero

Questo scenario include le circostanze seguenti:

  • Si spegne l'alimentazione in un computer che non risponde e quindi si riavvia il computer.
    Per verificare che un computer non risponda, premere il tasto di blocco MAIUSCOLE sulla tastiera. Se la luce di blocco caps sulla tastiera non cambia quando si preme il tasto di blocco Caps , il computer potrebbe non rispondere (noto anche come blocco rigido).
  • Il computer viene riavviato, ma non genera l'ID evento 41.
  • Il computer viene riavviato e genera l'ID evento 41, ma i valori BugcheckCode e PowerButtonTimestamp sono zero.

In questi casi, qualcosa impedisce a Windows di generare codici di errore o di scrivere codici di errore su disco. Un elemento potrebbe bloccare l'accesso in scrittura al disco (come nel caso di un computer che non risponde) oppure il computer potrebbe arrestarsi troppo rapidamente per scrivere i codici di errore o persino rilevare un errore.

Le informazioni contenute nell'ID evento 41 forniscono alcune indicazioni su dove iniziare a verificare la presenza di problemi:

  • L'ID evento 41 non viene registrato o il codice di controllo del bug è zero. Questo comportamento potrebbe indicare un problema di alimentazione. Se l'alimentazione a un computer viene interrotta, il computer potrebbe arrestarsi senza generare un errore di arresto. Se genera un errore di arresto, potrebbe non finire di scrivere i codici di errore su disco. Al successivo avvio del computer, potrebbe non registrare l'ID evento 41. In alternativa, il codice di controllo dei bug è zero. Le condizioni seguenti potrebbero essere la causa:

    • Nel caso di un computer portatile, la batteria è stata rimossa o scaricata.
    • Nel caso di un computer desktop, il computer è stato scollegato o si è verificata un'interruzione dell'alimentazione.
    • L'alimentatore è sottopotenziato o difettoso.
  • Il valore di PowerButtonTimestamp è zero. Questo comportamento può verificarsi se l'alimentazione è stata disconnessa a un computer che non rispondeva all'input. Le condizioni seguenti potrebbero essere la causa:

    • Un processo di Windows ha bloccato l'accesso in scrittura al disco e si arresta il computer premendo e tenendo premuto il pulsante di accensione per almeno quattro secondi.
    • L'alimentazione è stata disconnessa in un computer che non risponde.
  • Errore di scrittura del file di dump e tutti i valori sono Zero. Ad esempio:

    <EventData>
    <Data Name="BugcheckCode">0</Data>
    <Data Name="BugcheckParameter1">0x0</Data>
    <Data Name="BugcheckParameter2">0x0</Data>
    <Data Name="BugcheckParameter3">0x0</Data>
    <Data Name="BugcheckParameter4">0x0</Data>
    <Data Name="SleepInProgress">0</Data>
    <Data Name="PowerButtonTimestamp">0</Data>
    <Data Name="BootAppStatus">0</Data>
    </EventData>
    

    Esiste tuttavia un ID evento 46 registrato da volmgr: inizializzazione del dump di arresto anomalo non riuscita. Questo evento può verificarsi se il computer è stato avviato senza un file di dump configurato. Il file di dump predefinito è il file di pagina.

    Screenshot del registro eventi.

    Pertanto, quando si ha un caso con un riavvio imprevisto e l'ID evento 41 ha tutto il valore 0, verificare se si dispone di un ID evento 46 per volmgr. In tal caso, controllare la configurazione del file di pagina. I riavvii imprevisti potrebbero comunque verificarsi a causa di un controllo dei bug, ma il sistema non è in grado di scrivere il tipo di controllo dei bug nell'ID evento 41 e non è stato possibile generare anche un dump di memoria. Vedere l'ID evento 46 quando si avvia un computer

In genere, i sintomi descritti in questo scenario indicano un problema hardware. Per isolare il problema, seguire questa procedura:

  • Disabilitare l'overclocking. Se nel computer è abilitato l'overclocking, disabilitarlo. Verificare che il problema si verifichi quando il sistema viene eseguito alla velocità corretta.
  • Controllare la memoria. Usare un controllo della memoria per determinare l'integrità e la configurazione della memoria. Verificare che tutti i chip di memoria siano eseguiti alla stessa velocità e che ogni chip sia configurato correttamente nel sistema.
  • Controllare l'alimentatore. Verificare che l'alimentatore disponga di potenza sufficiente per gestire in modo appropriato i dispositivi installati. Se è stata aggiunta memoria, installato un processore più recente, installato più unità o aggiunto dispositivi esterni, tali dispositivi possono richiedere più energia di quanto l'alimentatore corrente possa fornire in modo coerente. Se il computer ha registrato l'ID evento 41 perché l'alimentazione al computer è stata interrotta, provare a ottenere un alimentatore (UPS) non ininterrutti, ad esempio un alimentatore di backup della batteria.
  • Verificare la presenza di surriscaldamento. Esaminare la temperatura interna dell'hardware e verificare la presenza di eventuali componenti di surriscaldamento.
  • Se il computer è un computer fisico, potrebbe essere stato riavviato da un software di ripristino automatico del server che ha rilevato che il computer non risponde.
  • Se il sistema è in esecuzione in una macchina virtuale Hyper-V e non fa parte di un ambiente cluster, il sistema potrebbe essere stato riavviato dalla funzionalità heartbeat Hyper-V. Se questa funzionalità è abilitata e l'host non rileva un heartbeat dalla macchina virtuale (forse perché non è reattivo), Hyper-V riavvierà la macchina virtuale.
  • Se il problema si verifica in un ambiente cluster Hyper-V, il problema potrebbe essere correlato all'opzione Abilita monitoraggio heartbeat per la macchina virtuale . Vedere File di dump della memoria danneggiata quando si tenta di ottenere un file dump di memoria completa da una macchina virtuale in esecuzione in un ambiente cluster.
  • Se il problema si verifica con una macchina virtuale VMWare, potrebbe essere correlato alla funzionalità heartbeat in VMWare oppure la macchina virtuale fa parte di un cluster di terze parti.
  • Verificare la presenza di eventuali eventi sospetti prima dell'ora di arresto (ottenuta dall'ID evento 6008) sia nel log dell'applicazione che nel log di sistema.

Se si eseguono questi controlli e non è ancora possibile isolare il problema, impostare il sistema sulla configurazione predefinita e verificare se il problema persiste.

Nota

Se viene visualizzato un messaggio di errore Stop che include un codice di controllo dei bug, ma l'ID evento 41 non include tale codice, modificare il comportamento di riavvio per il computer. A tal fine, attenersi alla seguente procedura:

  1. Fare clic con il pulsante destro del mouse su Risorse del computer, quindi scegliere Proprietà> Impostazioni >avanzate di sistemaAvanzate.
  2. Nella sezione Avvio e ripristino selezionare Impostazioni.
  3. Deselezionare la casella di controllo Riavvia automaticamente .

Ulteriori informazioni

Dettagli sull'ID evento 41

L'errore dell'ID evento kernel Power 41 si verifica quando il computer si arresta o si riavvia in modo imprevisto. All'avvio di un computer basato su Windows, viene eseguito un controllo per determinare se il computer è stato arrestato in modo pulito. In caso contrario, viene generato un messaggio di ID evento di Kernel Power 41.

Un ID evento 41 viene usato per segnalare che si è verificato un evento imprevisto che ha impedito l'arresto corretto di Windows. Le informazioni potrebbero non essere sufficienti per definire in modo esplicito ciò che è successo. Per altre informazioni , vedere Kernel Power Event ID 41 .See Kernel Power Event ID 41 .

  • Nome log: Sistema
  • Prodotto: Sistema operativo Windows
  • ID: 41
  • Origine: Microsoft-Windows-Kernel-Power
  • Livello: critico
  • Versione: 6.1
  • Messaggio: il sistema è stato riavviato senza prima arrestarsi in modo pulito. Questo errore può essere causato se il sistema ha smesso di rispondere, si è arrestato in modo anomalo o ha perso energia in modo imprevisto.

Nota

L'ora visualizzata nel file con estensione evtx viene regolata in base all'ora del sistema. Controllare il fuso orario del server.

  • ID evento 41: questo evento indica che Windows è stato riavviato senza un arresto completo.
  • ID evento 1074: questo evento viene registrato quando un'applicazione è responsabile dell'arresto o del riavvio del sistema. Indica anche quando un utente ha riavviato o arrestato il sistema usando il menu Start o premendo CTRL+ALT+CANC.
  • ID evento 6006: questo evento indica che Windows è stato adeguatamente disattivato.
  • ID evento 6008: questo evento indica un arresto non corretto o dirty. Viene registrato quando l'arresto più recente è stato imprevisto.

Poco prima dell'arresto del computer, shutdown.exe registrerà l'evento di arresto nel registro di sistema di Windows con un source=User32 e l'ID evento 1074 insieme a qualsiasi messaggio personalizzato & codice motivo.

Il registro eventi è l'unico modo per indicare che un riavvio attivato da shutdown.exe è in sospeso. L'evento registra anche il nome utente e la data e l'ora in cui è stato eseguito il shutdown comando.

Quando si usa shutdown.exe per riavviare un server, il processo di arresto consentirà in genere 30 secondi per garantire che ogni servizio in esecuzione abbia tempo per arrestarsi. I servizi vengono arrestati in ordine alfabetico. Arrestare manualmente i servizi in un ordine specifico con NET STOP o SC può essere leggermente più veloce.

File di stato di avvio (dal 6° interno di Windows)

Windows usa un file di stato di avvio (%SystemRoot%\Bootstat.dat) per registrare il fatto che è stato eseguito in varie fasi del ciclo di vita del sistema, inclusi l'avvio e l'arresto.

Ciò consente a Boot Manager, al caricatore di Windows e allo strumento ripristino di avvio di rilevare un arresto anomalo o un errore di arresto pulito, per offrire all'utente opzioni di ripristino e di avvio di diagnostica, ad esempio Ultima funzionalità valida nota e modalità provvisoria. Questo file binario contiene informazioni tramite le quali il sistema segnala l'esito positivo delle fasi seguenti del ciclo di vita del sistema:

  • Avvio (la definizione di un avvio con esito positivo è la stessa usata per determinare lo stato last known good, descritto in precedenza)
  • Arresto
  • Riprendere dall'ibernazione o dalla sospensione

Il file di stato di avvio indica anche se è stato rilevato un problema l'ultima volta che l'utente ha provato ad avviare il sistema operativo e le opzioni di ripristino visualizzate, indicando che l'utente è stato informato del problema e ha intrapreso un'azione. Le API della libreria di runtime (Rtl) in ntdll.dll contengono le interfacce private usate da Windows per leggere e scrivere nel file. Analogamente al BCD, non può essere modificato dagli utenti.

Informazioni sull'arresto

Quando viene avviato un arresto, Windows invia un messaggio di WM_QUERYENDSESSION a tutte le applicazioni in esecuzione con un thread dell'interfaccia utente. Questo messaggio chiede all'applicazione di salvare tutti i dati non salvati e di terminare normalmente. Se l'applicazione non risponde al messaggio entro un determinato limite di tempo, Windows invia un messaggio di WM_ENDSESSION all'applicazione, che termina immediatamente l'applicazione.

Se tutte le applicazioni rispondono al messaggio WM_QUERYENDSESSION e terminano normalmente, Windows registra un evento di arresto pulito nel registro eventi di sistema. Se un'applicazione non risponde al messaggio o termina in modo anomalo, Windows registra un evento di arresto dirty nel registro eventi di sistema.

Gli arresti imprevisti sono causati principalmente da componenti esterni al sistema operativo.

Un arresto dirty si verifica quando un sistema computer viene arrestato senza passare attraverso il processo di arresto corretto. Ciò può verificarsi quando l'alimentazione viene improvvisamente interrotta o quando il computer viene forzato a spegnersi tenendo premuto il pulsante di accensione. Un arresto dirty può causare la perdita o il danneggiamento dei dati e può anche causare problemi di avvio.

Il registro dirty shutdown count è una chiave del Registro di sistema di Windows che viene usata per tenere traccia del numero di volte in cui un sistema computer è stato arrestato senza passare attraverso il processo di arresto corretto. Questa chiave può essere utile durante la risoluzione dei problemi di avvio per identificare se il sistema è stato spento in modo non corretto.

È anche possibile cancellare tutti i valori (ad esempio DirtyShutdown, LastAliveStamp, TimeStampInterval) nella chiave del Registro di sistema seguente: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability. Ciò consente di impedire la visualizzazione di Rilevamento eventi di arresto dopo un arresto imprevisto.