Crea sito
24 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

PAGE_FAULT_IN_NONPAGED_AREA

Il  bug PAGE_FAULT_IN_NONPAGED_AREA ha un valore di 0x00000050. Ciò indica che è stata fatta riferimento a memoria di sistema non valida. In genere l’indirizzo di memoria è errato o l’indirizzo di memoria punta alla memoria liberata.

PAGE_FAULT_IN_NONPAGED_AREA Parametri
TABELLA 1
parametro Descrizione
1

Indirizzo di memoria referenziato

2

Dopo la versione di Windows 1507 (TH1) – x64

0: operazione di lettura

2: operazione di scrittura

10: eseguire l’operazione

Dopo la versione di Windows 1507 (TH1) – x86

0: operazione di lettura

2: operazione di scrittura

10: eseguire l’operazione

Dopo la versione di Windows 1507 (TH1) – ARM

0: operazione di lettura

1: operazione di scrittura

8: eseguire l’operazione

Prima di Windows 1507 (TH1) Versione x64 / x86

0: operazione di lettura

1: operazione di scrittura

3

Indirizzo che fa riferimento alla memoria (se noto)

4

Tipo di errore di pagina

0x03 – NONPAGED_BUGCHECK_WRONG_SESSION – È stato effettuato un tentativo di riferimento a un indirizzo dello spazio di sessione nel contesto di un processo che non ha sessione. In genere questo significa che il chiamante sta tentando erroneamente di accedere a un indirizzo di sessione senza ottenere correttamente un riferimento a un oggetto al processo corretto e collegarlo per primo. Questo controllo errori e sottotipo è stato utilizzato l’ultima volta in Windows 10 RS3. In Windows 10 RS4 e versioni successive, questo errore viene invece visualizzato come 0x02 (NONPAGED_BUGCHECK_NOT_PRESENT_PAGE_TABLE).

0x04 – NONPAGED_BUGCHECK_VA_NOT_CANONICAL – È stato tentato un riferimento a un indirizzo virtuale non canonico (illegale) (parametro 1). Il chiamante non dovrebbe mai tentare di accedere a questo indirizzo.

Se è possibile identificare il driver responsabile dell’errore, il suo nome viene stampato sulla schermata blu e memorizzato nella posizione (PUNICODE_STRING) KiBugCheckDriver. È possibile utilizzare il comando debugger dx per visualizzare questo – dx KiBugCheckDriver.

Causa
Il controllo errori 0x50 può essere causato dall’installazione di un servizio di sistema difettoso o da un codice driver errato. Anche il software antivirus può attivare questo errore, così come un volume NTFS danneggiato.

Potrebbe verificarsi anche dopo l’installazione di hardware difettoso o in caso di guasto dell’hardware installato (generalmente correlato a RAM difettosa, sia essa memoria principale, cache L2 RAM o RAM video).

Osservazioni
Registro eventi: controllare il registro di sistema nel Visualizzatore eventi per ulteriori messaggi di errore che potrebbero aiutare a individuare il dispositivo o il driver che causa l’errore. Per ulteriori informazioni, consultare Open Event Viewer. Cerca errori critici nel registro di sistema che si sono verificati nella stessa finestra temporale della schermata blu.

Risoluzione di un driver difettoso: esaminare il nome del driver se era elencato nella schermata blu o è presente nel registro eventi. Contattare il fornitore del driver per vedere se è disponibile un driver aggiornato.

Risoluzione di un problema di servizio di sistema difettoso: disabilitare il servizio e confermare che ciò risolva l’errore. In tal caso, contattare il produttore del servizio di sistema per un possibile aggiornamento. Se l’errore si verifica durante l’avvio del sistema, esaminare le opzioni di riparazione di Windows. Per ulteriori informazioni, consultare Opzioni di ripristino in Windows 10.

Risoluzione di un problema del software antivirus: disabilitare il programma e confermare che ciò risolva l’errore. In tal caso, contattare il produttore del programma per un possibile aggiornamento.

Risoluzione di un problema di volume NTFS danneggiato: eseguire Chkdsk / f / r per rilevare e riparare errori del disco. È necessario riavviare il sistema prima che la scansione del disco inizi su una partizione di sistema. Contattare il produttore del sistema di driver rigido per individuare eventuali strumenti diagnostici forniti per il sottosistema del disco rigido.

Diagnostica memoria di Windows: eseguire lo strumento Diagnostica memoria di Windows per testare la memoria fisica. Fare clic sul pulsante Start, quindi su Pannello di controllo. Nella casella di ricerca, digitare Memoria, quindi fare clic su Diagnosi dei problemi di memoria del computer. Dopo l’esecuzione del test, utilizzare il Visualizzatore eventi per visualizzare i risultati nel registro di sistema. Cerca la voce MemoryDiagnostics-Results per visualizzare i risultati.

Risoluzione di un problema hardware difettoso: se l’hardware è stato aggiunto di recente al sistema, rimuoverlo per vedere se l’errore si ripete. Se l’hardware esistente non funziona, rimuovere o sostituire il componente difettoso. È necessario eseguire la diagnostica hardware fornita dal produttore del sistema. Per i dettagli su queste procedure, consultare il manuale del proprietario del computer.

Per informazioni generali sulla risoluzione dei problemi della schermata blu, consultare Dati schermata blu.

Risoluzione
In genere, l’indirizzo di riferimento è nella memoria liberata o è semplicemente non valido. Questo non può essere protetto da un tentativo – tranne l’handler – può essere protetto solo da una sonda o da tecniche di programmazione simili.

Utilizzare comandi di debugger come kb (Display Stack Backtrace) per esaminare il codice di errore.

Utilizzare lm t n per elencare i moduli caricati in memoria.

Utilizzare il comando d, da, db, dc, dd, dD, df, dp, dq, du, dw (Display Memory) per esaminare le aree di memoria a cui fanno riferimento il parametro 1 e il parametro 3.

dbgcmd

copia
2: kd> db ffffffff00000090
ffffffff`00000090 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000a0 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000b0 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000c0 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000d0 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000e0 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000f0 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`00000100 ?? ?? ?? ?? ?? ?? ?? ?? – ?? ?? ?? ?? ?? ?? ?? ?? ????????????????
In questo caso non sembra che ci siano dati in quest’area di memoria nel parametro 1, che è l’area della memoria che stava tentando di leggere.

Utilizzare il comando! Address per esaminare il parametro 3 che è l’indirizzo dell’istruzione che faceva riferimento alla memoria errata.

dbgcmd

copia
2: kd>! Address fffff80240d322f9
Utilizzo: modulo
Indirizzo di base: fffff802`40ca8000
Indirizzo finale: fffff802`415fb000
Dimensione regione: 00000000`00953000
Tipo VA: BootLoaded
Nome del modulo: ntoskrnl.exe
Percorso del modulo: [\ SystemRoot \ system32 \ ntoskrnl.exe]
Utilizzare u, ub, uu (Unassemble) Dissasemble con il parametro 3, per esaminare il riferimento alla cattiva memoria. Per ulteriori informazioni sul processore X64 e sul linguaggio assembly, consultare Il processore x64.

dbgcmd

copia
2: kd> u fffff80240d322f9
! Nt RtlSubtreePredecessor + 0x9:
fffff802`40d322f9 488b4810 mov rcx, qword ptr [rax + 10h]
fffff802`40d322fd eb07 jmp nt! RtlSubtreePredecessor + 0x16 (fffff802`40d32306)
fffff802`40d322ff 488bc1 mov rax, rcx
fffff802`40d32302 488b4910 mov rcx, qword ptr [rcx + 10h]
fffff802`40d32306 4885c9 test rcx, rcx
fffff802`40d32309 75f4 jne nt! RtlSubtreePredecessor + 0xf (fffff802`40d322ff)
fffff802`40d3230b c3 ret
fffff802`40d3230c c3 ret
Usa ub per disassemblare all’indietro da un determinato indirizzo.

Utilizzare il comando r (Registers) per esaminare ciò che è stato eseguito durante il controllo del bug di sistema.

dbgcmd

copia
2: kd> r
Ultimo contesto impostato:
rax = ffffffff00000080 rbx = 0000000000000000 rcx = ffffa68337cb7028
rdx = 7a107838c48dfc00 rsi = 0000000000000000 rdi = 0000000000000000
rip = fffff80240d322f9 rsp = ffff840c96510958 rbp = fffffffffffffffff
r8 = ffffffffffffffff r9 = 0000000000000000 r10 = 7ffffffffffffffc
r11 = ffff840c96510a10 r12 = 0000000000000000 r13 = 0000000000000000
r14 = 0000000000000000 r15 = 0000000000000000
iopl = 0 nv up ei ng nz na pe nc
cs = 0010 ss = 0018 ds = 0000 es = 0000 fs = 0000 gs = 0000 efl = 00010282
! Nt RtlSubtreePredecessor + 0x9:
fffff802`40d322f9 488b4810 mov rcx, qword ptr [rax + 10h] ds: ffffffff`00000090 = ?????????????????
In questo caso fffff80240d322f9 si trova nel registro del puntatore dell’istruzione, rip.

I comandi! Pte e! Pool possono anche essere usati per esaminare la memoria.

Utilizzare! Memusage e per esaminare lo stato generale della memoria di sistema.

Driver Verifier

Driver Verifier è uno strumento che viene eseguito in tempo reale per esaminare il comportamento dei driver. Ad esempio, Driver Verifier controlla l’uso delle risorse di memoria, come i pool di memoria. Se rileva errori nell’esecuzione del codice del driver, crea in modo proattivo un’eccezione per consentire a tale parte del codice del driver di essere ulteriormente esaminata. Il gestore di verifica driver è integrato in Windows ed è disponibile su tutti i PC Windows. Per avviare il gestore del verificatore del driver, digitare Verificatore al prompt dei comandi. È possibile configurare quali driver si desidera verificare. Il codice che verifica i driver aggiunge overhead durante l’esecuzione, quindi prova a verificare il minor numero possibile di driver. Per ulteriori informazioni, consultare Driver Verifier.

Translate »