Arrestare 7F, 0x00000008 errore (doppio errore) si verifica a causa di un errore a bit singolo nel registro ESP

Questo articolo fornisce una soluzione a un 0x0000007F STOP, 0x00000008 messaggio di errore nel computer a causa di un errore specifico del processore. Questo messaggio di errore può essere visualizzato quando si verifica un errore a bit singolo nel registro ESP di un processore in esecuzione nel computer.

Si applica a: Windows Server 2012 R2
Numero KB originale: 842465

Sintomi

In un computer che esegue uno o più processori Intel Xeon o che esegue altri processori, Windows potrebbe visualizzare un messaggio di errore Stop simile all'esempio seguente:

STOP 0x0000007F (0x00000008, 0x00000000, 0x00000000, 0x00000000) UNEXPECTED_KERNEL_MODE_TRAP

Quando si verifica questo problema, si verificano le condizioni seguenti:

  • Il primo parametro dell'errore Stop è "0x0000008". Questo errore è un'eccezione a doppio errore.
  • A causa di un errore a bit singolo nella metà superiore del registro ESP, il valore nel registro ESP non è compreso nell'intervallo dello stack del thread corrente.

Causa

Questo problema si verifica se uno o più processori nel computer:

  • Richiedere un aggiornamento del microcodice non applicato dal BIOS (Basic Input/Output System) del computer.

  • Sono danneggiati o difettosi.

  • Funzionano al di fuori degli intervalli specificati per temperatura, potenza o altre condizioni.

Risoluzione

Per risolvere il problema, usare uno dei metodi di risoluzione dei problemi seguenti.

Metodo 1: determinare se il processore esegue la revisione di produzione dell'aggiornamento del microcodice

Un aggiornamento del microcodice corregge errori, o bug, nella logica implementata internamente di un processore. Gli aggiornamenti del microcodice non possono essere archiviati in modo permanente nel processore stesso e devono essere caricati nel processore ogni volta che il computer viene avviato. Gli aggiornamenti del microcodice possono essere applicati dal BIOS del computer o dal driver Update.sys.

Per identificare la revisione dell'aggiornamento del microcodice attualmente applicato a un processore Intel installato nel computer, seguire questa procedura:

  1. Scaricare Intel Processor Identification Utility.

  2. Installare ed eseguire Intel Processor Identification Utility nel computer che presenta sintomi.

  3. Annotare le informazioni seguenti sulla CPU per ogni processore:

    • Famiglia di CPU
    • Modello CPU
    • Esecuzione di un'istruzione CPU
    • Revisione della CPU

    I valori della famiglia di CPU, del modello cpu e dell'istruzione cpu identificano il tipo specifico di processore. Il valore Revisione CPU identifica la revisione dell'aggiornamento del microcodice applicato.

  4. Contattare il produttore del computer per determinare se la revisione dell'aggiornamento del microcodice è la revisione più recente disponibile per un processore specifico. Se la revisione non è la più recente, chiedere al produttore del computer un BIOS aggiornato che applicherà la revisione dell'aggiornamento del microcodice più recente.

I sintomi descritti in questo articolo sono stati osservati più di frequente nei processori Intel Xeon con i valori della famiglia cpu, del modello CPU e dell'istruzione cpu rispettivamente 15, 2 e 9 e installati nelle schede madri che usano chipset ServerWorks. I valori esadecimali della famiglia CPU, del modello CPU e dell'istruzione della CPU sono rispettivamente F, 2 e 9. Questi processori richiedono un valore di revisione di 0x18 o versioni successive per funzionare correttamente. (0x18 equivale a un valore decimale pari a 24.

Un valore di revisione pari a 0 indica che il BIOS del computer non dispone dell'aggiornamento del microcodice corretto per i processori installati nel computer. È necessario aggiornare il BIOS con una revisione dell'aggiornamento del microcodice che supporti i processori in uso.

Intel consiglia di applicare le revisioni più recenti degli aggiornamenti del microcodice per evitare problemi noti.

Metodo 2: Determinare se un processore è danneggiato o difettoso

Se i processori installati nei computer interessati hanno applicato la revisione dell'aggiornamento del microcodice di produzione e i sintomi descritti in questo articolo non si verificano in tutti i computer dello stesso modello che eseguono gli stessi processori, i processori potrebbero essere difettosi.

Per determinare se un processore è danneggiato o difettoso, spostare il processore in un computer che non presenta sintomi.

Avviso

Se si modificano i processori, seguire le istruzioni fornite dal produttore del computer o contattare tecnici hardware qualificati in modo appropriato per modificare i processori.

Se i sintomi continuano a verificarsi nel computer originale con il processore sostitutivo, ma non nell'altro computer con il processore originale, il problema probabilmente non è causato da un processore danneggiato o difettoso.

Se i sintomi non continuano a verificarsi nel computer originale con il processore sostitutivo, ma si verificano nell'altro computer con il processore originale, il problema è probabilmente causato da un processore danneggiato o difettoso. In questo caso, contattare il produttore del computer per sostituire il processore originale.

Se il computer che sta riscontrando i sintomi descritti in questo articolo ha più di un processore, spostare tutti i processori nell'altro computer. Se i risultati indicano che uno o più di questi processori possono essere difettosi, spostare i processori uno alla volta per determinare il processore o i processori che potrebbero essere difettosi.

Metodo 3: Determinare se un processore opera al di fuori di un intervallo specificato di condizioni ambientali

L'eccessiva temperatura ambiente, la cattiva ventilazione o l'accumulo di polvere possono causare un comportamento anomalo dei componenti elettronici, ad esempio i processori. Ventole non funzionanti o passaggi d'aria bloccati possono causare problemi di ventilazione. Se i passaggi interni o d'aria del computer sono polverosi o se il computer presenta sintomi quando viene installato solo in una determinata posizione, il surriscaldamento del sistema può essere un fattore. Assicurarsi che i componenti siano puliti, che le ventole funzionino correttamente e che i passaggi d'aria non siano ostruite. Inoltre, assicurarsi che la stanza in cui si trova il computer sia adeguatamente ventilata. La temperatura della stanza deve essere compresa nell'intervallo di funzionamento specificato dal produttore del computer.

La tensione superiore o inferiore a quella specificata o che varia può causare un comportamento anomalo dei processori e di altri componenti elettronici. La tensione principale non corretta o incoerente, un alimentatore sovraccarico o non funzionante nel computer o circuiti della scheda madre non funziona correttamente possono causare tensione errata o incoerente da fornire al processore. Contattare i tecnici appropriati per verificare se uno di questi problemi può essere la causa dei sintomi.

Ulteriori informazioni

Per altre informazioni sugli errori di arresto 0x0000007F, vedere 0x0000007F Errore di arresto in un computer basato su Windows.

Il registro ESP è noto anche come registro puntatore dello stack. Uno stack è una struttura di dati in memoria usata per archiviare informazioni sullo stato corrente dell'esecuzione di un thread. Lo stack di un thread viene usato per tenere traccia delle chiamate di funzione in corso, dei parametri passati a tali funzioni e delle variabili usate da tali funzioni. Il valore nel registro ESP dovrebbe puntare alla parte superiore corrente dello stack. Se il valore in ESP non è corretto, potrebbe puntare a informazioni non corrette o a un indirizzo non valido. Se il valore in ESP punta a un indirizzo non valido, potrebbe verificarsi un'eccezione di doppio errore.

Per determinare se l'errore Stop è il risultato di un errore a bit singolo nel registro ESP, seguire questa procedura:

  1. Installare Microsoft Debugging Tools per Windows.

  2. Eseguire lo strumento WinDbg, selezionare File, selezionare Apri dump di arresto anomalo per individuare il file di dump della memoria che contiene le informazioni sull'errore Stop e quindi selezionare OK.

  3. Eseguire il !analyze -v comando per ottenere un'analisi automatizzata del file di dump.

  4. Esaminare l'output del !analyze -v comando per verificare se l'output mostra una condizione di doppio errore. Se esiste una condizione di doppio errore, eseguire il .tss 28 comando per visualizzare lo stato del sistema al momento del doppio errore. In genere, questo valore è relativamente vicino al valore del registro EBP.

  5. Eseguire il !thread comando per visualizzare l'intervallo di stack del thread corrente. Un'eccezione a doppio errore si verifica in genere quando il valore del registro ESP non è compreso nell'intervallo di indirizzi riservati allo stack per il thread corrente.

    Quando questo particolare thread è in esecuzione, il valore del registro ESP deve essere sempre compreso tra il valore stack base (f5d2a000) e il valore limite (f5d27000). In genere, il valore del registro ESP è relativamente vicino al valore Corrente (f5d29c9c). Il valore Current si trova anche tra il valore Stack Base e il valore Limit.

    È anche possibile controllare i valori dell'intervallo di stack eseguendo il !pcr comando .

    Il NtTib.StackLimit valore rappresenta il limite inferiore dell'intervallo di stack. Il NtTib.StackBase valore rappresenta un valore recente di ESP. Il NtTib.StackBase valore può essere confrontato con il valore corrente del registro ESP per identificare se si verifica un errore a bit singolo nel valore del registro ESP corrente.

  6. Eseguire il .formats esp ^ ebp comando per visualizzare le differenze nei valori tra i registri ESP ed EBP. Il valore del puntatore dello stack nel registro EBP sarà vicino al valore del puntatore dello stack nel registro ESP, ad eccezione dell'errore a bit singolo. Questo comando mostra spesso il singolo bit di ordine elevato che contiene l'errore, soprattutto quando l'errore viene visualizzato in formato binario.

    Se si ignorano le cifre meno significative, la differenza a bit singolo tra i registri ESP ed EBP è 000000000 000010000 0000000000 000000000000 in formato binario. La differenza è 00080000 in formato esadecimale.

    Questo errore a bit singolo fa sì che il registro ESP contenga un valore non corretto. Il valore non corretto causa un'eccezione di doppio errore, un controllo dei bug e un arresto anomalo del sistema.

Per ottenere altre informazioni sull'hardware specifico, seguire questa procedura:

  1. Usare il !cpuinfo comando per ottenere informazioni sulla versione della CPU.

    Anche se il valore della firma di aggiornamento potrebbe non essere sempre segnalato con precisione quando si analizza un file di dump di arresto anomalo, il campo Firma di aggiornamento indica in genere la revisione dell'aggiornamento del microcodice applicata alla CPU.

  2. Usare il !pcitree comando per trovare gli identificatori del fornitore e del dispositivo (ID VenDev) per i dispositivi PCI (Peripheral Connect Interface) esistenti.

    Per ogni dispositivo PCI elencato, il primo valore esadecimale a 8 cifre (DWORD) in ogni riga è l'ID VenDev. L'ID fornitore è in realtà la seconda 4 cifre di questo valore. Ad esempio, il primo dispositivo elencato ha un ID VenDev di 0x00141166. L'ID dispositivo è 0x0014 e l'ID fornitore è 0x1166. L'ID fornitore per ServerWorks è 0x1166. Questo output proviene quindi da un processore installato in una scheda madre che usa chipset ServerWorks.

I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti