BSOD - significato di bugcheck?


4

Quando accedi a Windows 7 oggi, il mio PC immediatamente BSOD'd. Usando WhoCrashed ottengo il seguente rapporto:

-

  • Il giorno 12.02.2013 13:56:20 GMT il tuo computer si è schiantato
  • file di crash dump: C: \ Windows \ Minidump \ 021213-27390-01.dmp
  • uptime: 00:00:25
  • Questo è stato probabilmente causato dal seguente modulo: ntoskrnl.exe (nt + 0x1AA698)
  • Codice Bugcheck: 0x1000007E (0xFFFFFFFF0000096, 0xFFFFF80003610698, 0xFFFFF8800614C7B8, 0xFFFFF8800614C010)
  • Errore: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M
  • percorso del file: C: \ Windows \ system32 \ ntoskrnl.exe
  • Prodotto: Sistema operativo Microsoft® Windows®
  • azienda: Microsoft Corporation
  • descrizione: NT Kernel & amp; Sistema
  • Descrizione controllo bug: Ciò indica che un thread di sistema ha generato un'eccezione che il gestore degli errori non ha rilevato.

Questo sembra essere un tipico errore del driver del software e non è probabile che sia causato da un problema hardware. L'incidente è avvenuto nel kernel di Windows. Probabilmente questo problema è causato da un altro driver che non può essere identificato in questo momento.

-

Adesso, il mio PC si è bloccato / congelato occasionalmente e su specifici compiti con prestazioni elevate in passato, ma la causa di ciò (pensavo) era uno slot RAM difettoso nella mia scheda madre. Mantenere lo slot vuoto ha bloccato gli arresti anomali.

Oggi si è nuovamente bloccato e non ho cambiato nulla di hardware.

So che potrei andare in giro con Google a leggere che cosa significa questo codice bugcheck, ma ultimamente ho capito che un'esperienza personale di qualcuno (con lo stesso bugcheck / problema) è molto più utile, specialmente perché questa persona potrebbe essere arrivata a soluzione.

Grazie mille!


1
Primo ... Aggiorna tutti i driver del dispositivo. Utilizzare la modalità provvisoria per regolare quali driver vengono caricati quando viene caricato Windows
Ramhound

Grazie! Per quanto riguarda la mia risposta a Ian Boyd, potresti conoscere un buon software di aggiornamento dei dispositivi? Oppure il solito metodo manuale è ancora il migliore per aggiornare il / i tuo / i driver / i?
cr0z3r

1
Qualsiasi software progettato per aggiornare i driver (ad eccezione di Windows Update) è una grande truffa. Fallo nel modo corretto te stesso
Ramhound

Risposte:


10

In questo caso, un thread ha riscontrato l'eccezione

C0000096: STATUS_PRIVILEGED_INSTRUCTION
          Executing an instruction not allowed in current machine mode.

Questo errore è stato generato dalla CPU stessa. Alcuni codici hanno tentato di eseguire un'istruzione che non è consentita. Probabilmente ciò è causato dalla corruzione della memoria; dove il codice del kernel ha cercato di eseguire i dati indesiderati.

Questo tipo di errore è davvero impossibile da individuare. C'è stato un errore in "Kernel" codice che non dovrebbe essere successo. È straordinariamente improbabile che ci sia un bug del software in qualsiasi codice di Microsoft; che è quando inizi a guardare altrove.

  • Driver di terze parti . Le unità in modalità kernel hanno pieno accesso all'hardware fisico. Qualsiasi bug vagante in qualsiasi driver di terze parti (ad esempio video, audio, rete, USB 3.0, SATA) e può danneggiare il codice o i dati di qualsiasi altra cosa nel sistema. Prossimi passi : prova a rimuovere l'hardware appena aggiunto (quindi alcuni driver di terze parti non sono caricati), prova l'avvio in modalità provvisoria (quindi alcuni driver di terze parti non sono caricati), o reinstalla Windows (quindi alcuni driver di terze parti non vengono caricati)
  • Bad RAM . Se un bit è stato ruotato e ha trasformato un'istruzione perfettamente benigna in un'istruzione diversa, non valida, è possibile ottenere questo errore. Prossimi passi : Rimuovi la RAM, sposta la RAM in altri slot, sblocca la RAM, cambia gli alimentatori
  • overclocking . A volte cose straordinariamente strane possono accadere quando overclock. Speriamo che tutti mandino a Microsoft i loro crash dump; perché Microsoft li indaga. Un errore comune che otterrebbero è quando la CPU sta eseguendo l'istruzione:

    xor eax, eax;
    

    Questa è un'operazione straordinariamente semplice che può essere eseguita dalla CPU; sta semplicemente impostando un registro CPU interno EAX a zero. Non c'è modo può fallire; tranne quando overclock - o altri problemi fisici.

tl; dr: Se hai eliminato il software, allora è l'hardware.

Aggiornare : Metodologia di risoluzione dei problemi

Volevo menzionare i dettagli che ho attraversato, quasi senza pensarci guardando questo errore.

Il primo era l'effettivo codice bugcheck:

0x1000007E - SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M

Binging che su Google dà la pagina della documentazione di Microsoft

Bug Check 0x1000007E: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M

Ciò indica che un thread di sistema ha generato un'eccezione che il gestore degli errori non ha rilevato.

so, dall'esperienza di sviluppatore, che se la mia applicazione (o uno dei suoi thread) sperimenta un "eccezione" e io no "maniglia "Eccezione, Windows finirà per gestirlo uccidendo l'applicazione.Se si verifica un'eccezione non gestita mentre si è in modalità kernel, il sistema operativo non ha altra scelta che gestirlo chiudendo il kernel. quale eccezione era stato gettato. io assunto (erroneamente, si scopre) era un "Violazione di accesso" .

so che tutti i bugcheck sono accompagnati da quattro parametri che descrivono cosa è successo realmente:

  • Parametro 1: 0xFFFFFFFFC0000096
  • Parametro 2: 0xFFFFF80003610698
  • Parametro 3: 0xFFFFF8800614C7B8
  • Parametro 4: 0xFFFFF8800614C010

Ma cosa diavolo significano ?! Ecco quando torniamo alla pagina della documentazione, che non li descrive. Ma ciò fa dire:

Il controllo dei bug 0x1000007E ha lo stesso significato e i medesimi parametri di controllo bug 0x7E (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED).

Eccellente. E questa altra pagina documenta i parametri:

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED Parametri

I seguenti parametri appaiono sullo schermo blu.

  • Parametro 1: il codice di eccezione che non è stato gestito
  • Parametro 2: l'indirizzo in cui si è verificata l'eccezione
  • Parametro 3: l'indirizzo del record di eccezione
  • Parametro 4: l'indirizzo del record di contesto

Questo è quello che volevo, il codice di eccezione che non è stato gestito . Nel tuo caso era un codice di eccezione:

0xFFFFFFFFC0000096

so, per esperienza, che stai usando un Windows a 64 bit, perché quel codice è lungo 64 bit. In realtà voglio solo i 32 bit più bassi:

0xC0000096

Normalmente mi sarei aspettato di trovare quel codice di errore winerror.h nella mia directory di sviluppo; ma non era lì. Ci sono voluti alcuni Binging, ma ho scoperto che cercavo:

winerror C0000096

portami a una pagina su WineHQ , che ha dichiarato la costante:

STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096

Binging per quella costante mi ha portato a pagina della documentazione Microsoft canonica :

Eccezioni hardware

STATUS_PRIVILEGED_INSTRUCTION: Esecuzione di un'istruzione non consentita nella modalità macchina corrente.

So anche che questa eccezione è generata dalla CPU si . lo so perché "Istruzione privilegiata" significa che hai provato a eseguire un'istruzione della CPU che non sei autorizzato. posso anche sapere questo perché viene chiamata la pagina Eccezioni hardware .

Quindi siamo al punto in cui era in esecuzione un codice che tentava di eseguire un'istruzione della CPU che non era previsto. Ci sono due possibilità:

  • la memoria era corrotta; il software non è stato scritto per provare a eseguire quel codice, ma è quello che è appena finito nella RAM
  • è davvero un software bacato e ha cercato di fare qualcosa che non è permesso.

Dato che il codice di Microsoft viene costantemente testato sul campo in milioni di computer ogni giorno, è più probabile:

  • essere un problema con il tuo hardware
  • un bug nel codice di qualcun altro che causa problemi

Ad ogni modo, quello era Come Ho lavorato su quel bugcheck. Forse sapendo come sono passato, può aiutarti la prossima volta che hai un bugcheck.


Grazie! Consiglieresti uno strumento specifico che mi permetta di controllare / aggiornare i miei driver alla loro versione più recente, o dovrei farlo manualmente?
cr0z3r

1
@ cr0z3r Non ho mai trovato un singolo verificatore di driver generico (sto parlando di quelli che controllano tutti i driver del computer, non quelli che controllano se un driver specifico è aggiornato) che non era una truffa / pieno di adware. Vorrei visitare il sito Web di ogni produttore.
Scott Chamberlain

@ScottChamberlain Precisamente il mio punto .. offrono sempre una versione di prova che elenca un miliardo di driver obsoleti, ma solo dopo aver acquistato la loro versione pro-super-esclusiva sei (presumibilmente) in grado di aggiornarli automaticamente. Comunque, il lavoro manuale è. Grazie!
cr0z3r

1
Non è sicuro pensarlo. Microsoft ha solo driver che i produttori inviano a WHQL per i test WHQL. Nel mio caso, ciò significava un driver di chipset di rete che aveva dieci anni, anziché quello creato l'anno scorso. Realtek non si è mai preoccupato di inviarlo a Microsoft; quindi Windows Update non ce l'ha. Ecco perché dovrai andare dai produttori, a volte. Il chipset USB3.0 della mia scheda madre non ha driver su Windows Update; dovevo andare sul loro sito web. nVidia non aggiorna sempre i driver WHQL. A volte anche i driver del chipset della scheda madre.
Ian Boyd

1
D'altra parte, non si desidera aggiornare i driver, volenti o nolenti. A volte l'ultimo e il più grande ha bug che non sono stati ancora trovati. preferisco fidarmi dei driver certificati WHQL (fuori da Windows Update). Ma se hai un problema con qualcosa, non hai altra scelta che aggiornare i driver.
Ian Boyd
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.