Condividi tramite


Controllo bug 0x7F: UNEXPECTED_KERNEL_MODE_TRAP

Il controllo UNEXPECTED_KERNEL_MODE_TRAP bug ha un valore di 0x0000007F. Questo controllo di bug indica che la CPU Intel ha generato una trappola e il kernel non è riuscito a rilevare questa trappola.

Questa trappola potrebbe essere uno dei tipi seguenti:

  • Una trappola associata, che è una trappola che il kernel non è autorizzato a catturare.
  • Errore doppio, che si è verificato durante l'elaborazione di un errore precedente, che genera sempre un errore di sistema.

Importante

Questo argomento è destinato ai programmatori. Se si è un cliente che ha ricevuto un codice di errore dello schermo blu durante l'uso del computer, vedere Risolvere gli errori dello schermo blu.

Parametro 1

Il primo parametro visualizzato nella schermata blu specifica il numero di trap.

I numeri di trap più comuni sono i codici seguenti:

Parametro Codice trap Descrizione
0x00000000 Divisione per zero errore Indica che viene eseguita un'istruzione DIV e il divisore è zero. Il danneggiamento della memoria, altri problemi hardware o errori software possono causare questo errore.
0x00000004 Overflow Si verifica quando il processore esegue una chiamata a un gestore di interruzioni quando viene impostato il flag overflow (OF).
0x00000005 Errore di controllo dei limiti Indica che il processore, durante l'esecuzione di un'istruzione BOUND, rileva che l'operando supera i limiti specificati. Un'istruzione BOUND garantisce che un indice di matrice firmato si trova all'interno di un determinato intervallo.
0x00000006 Opcode non valido Indica che il processore tenta di eseguire un'istruzione non valida. Questo errore si verifica in genere quando il puntatore alle istruzioni è stato danneggiato e punta alla posizione errata. La causa più comune di questo errore è il danneggiamento della memoria hardware.
0x00000008 Errore doppio Indica che un'eccezione si verifica durante una chiamata al gestore per un'eccezione precedente. In genere, le due eccezioni vengono gestite serialmente. Esistono diverse eccezioni che non possono essere gestite serialmente, quindi il processore segnala un errore doppio.

Esistono due cause comuni di un doppio errore:

  • La prima causa è un overflow dello stack del kernel. Questo overflow si verifica quando viene raggiunta una pagina di protezione e il kernel tenta di eseguire il push di un frame di trappola. Poiché non è stato lasciato uno stack, un overflow dello stack genera l'errore doppio. Se si ritiene che questa situazione si sia verificata, usare l'estensione !thread per determinare i limiti dello stack e quindi usare il comando kb (Display Stack Backtrace) con un valore elevato, ad esempio kb 100, per visualizzare lo stack completo.
  • La seconda causa comune è un problema hardware.

I codici trap meno comuni includono i valori seguenti:

  • 0x00000001: chiamata del debugger di sistema (DEBUG)
  • 0x00000003: punto di interruzione del debugger (INT3)
  • 0x00000007: istruzione del coprocessore hardware senza presente coprocessore (NXP_NOT_AVAILABLE)
  • 0x0000000A: Segmento stato attività danneggiato (INVALID_TSS)
  • 0x0000000B: accesso a un segmento di memoria non presente (SEGMENT_NOT_PRESENT)
  • 0x0000000C: accesso alla memoria oltre i limiti di uno stack (STACK_FAULT)
  • 0x0000000D: un'eccezione non coperta da un'altra eccezione, un errore di protezione che riguarda le violazioni di accesso per le applicazioni (GP_FAULT)
  • 0x0000000F: eccezione di trap riservata (RESERVED_TRAP)
  • 0x00000010: eccezione del coprocessore hardware (NPX_ERROR)
  • 0x00000011: eccezione di controllo allineamento (ALIGNMENT_CHECK)

Per altri numeri di trap, fare riferimento al manuale dell'architettura del processore Intel per il processore che si sta risolvendo.

Causa

Il controllo dei bug 0x7F in genere si verifica dopo l'installazione di hardware difettoso o non corrispondente, in particolare la memoria o se l'hardware installato ha esito negativo.

Un errore doppio può verificarsi quando lo stack di kernel esegue il overflow. Questo overflow si verifica se più driver sono collegati allo stesso stack. Ad esempio, se due driver di filtro del file system vengono collegati allo stesso stack e quindi il file system torna indietro, il overflow dello stack.

Debug

Iniziare sempre con l'estensione !analizza con l'opzione -v , dettagliata. Esaminare l'output e il codice di errore. Cercare tendenze ricorsiva in più dump.

Dopo aver provato !analizza, usare il comando del debugger kv (Display Stack Backtrace).

  • Se kv mostra un gate attività, usare il comando .tss (Display Task State Segment) nella parte prima dei due punti.
  • Se kv mostra un frame di trap, usare il comando trap (Display Trap Frame) per formattare la cornice.
  • In caso contrario, usare il comando trap (Display Trap Frame) nel frame appropriato. Nelle piattaforme basate su x86, questo frame è associato alla procedura NT! KiTrap.

Dopo aver usato uno di questi comandi, usare di nuovo kv per visualizzare il nuovo stack.

Risolvere problemi

Hardware

Se l'hardware è stato aggiunto di recente al computer, rimuoverlo per verificare se l'errore si ripete. Se l'hardware esistente non è riuscito, rimuovere o sostituire il componente difettoso. Eseguire la diagnostica hardware fornita dal produttore del sistema per determinare quale componente hardware non è riuscito.

La memoria non corrispondente o non corrispondente può causare questo controllo di bug. Usare il programma di diagnostica della memoria in Windows per testare tutta la memoria di sistema.

Verificare che tutti i dischi rigidi e i controller disco rigido siano compatibili con la versione installata di Windows.

La scheda madre del sistema potrebbe avere problemi, ad esempio una traccia graffiata o un componente difettoso. Un alimentatore non riuscito può causare anche problemi.

L'overclocking imposta la CPU per l'esecuzione in velocità superiore alla specifica valutata, che può causare questo errore. Se si è sovraclockato il computer che ha riscontrato l'errore, restituire la CPU all'impostazione di velocità di clock predefinita. Disabilitare la memorizzazione nella cache della memoria del BIOS per provare a risolvere il problema se questa opzione è disponibile.

Software

Controllare l'accesso al sistema Visualizzatore eventi per altri messaggi di errore che potrebbero aiutare a identificare il dispositivo o il driver che causa l'errore.

Controllare la disponibilità degli aggiornamenti per ACPI/BIOS, il controller del driver rigido o le schede di rete dal produttore dell'hardware.

Se si è verificato l'errore dopo l'installazione di un driver di dispositivo nuovo o aggiornato, rimuovere o sostituire il driver. Se, in questa circostanza, l'errore si verifica durante la sequenza di avvio, usare la modalità provvisoria per rinominare o eliminare il driver difettoso. Se il driver viene usato come parte del processo di avvio del sistema in modalità provvisoria, avviare il computer usando la console di ripristino per accedere al file. Provare l'opzione Ultima configurazione valida nota . Questa opzione è più efficace quando si aggiunge un solo driver o servizio alla volta.

Se si verifica questo errore durante l'aggiornamento a una nuova versione del sistema operativo Windows, l'errore potrebbe essere causato da software non compatibile. Alcuni esempi includono un driver di dispositivo, un servizio di sistema, uno scanner di virus o uno strumento di backup. Se possibile, rimuovere tutti i driver di dispositivo e i servizi di sistema di terze parti e disabilitare eventuali scanner di virus prima dell'aggiornamento. Contattare il produttore del software per ottenere gli aggiornamenti di questi strumenti. Assicurarsi inoltre di aver installato gli aggiornamenti di Windows più recenti.

Vedi anche