Controllo bug 0x76: PROCESS_HAS_LOCKED_PAGES
Il controllo dei bug PROCESS_HAS_LOCKED_PAGES ha un valore di 0x00000076. Questo controllo di bug indica che un driver non è riuscito a rilasciare pagine bloccate dopo un'operazione di I/O o che ha tentato di sbloccare le pagine già sbloccate.
Importante
Questo articolo è destinato ai programmatori. Se si è un cliente che ha ricevuto un codice di errore della schermata blu durante l'uso del computer, vedere Risolvere gli errori della schermata blu.
parametri PROCESS_HAS_LOCKED_PAGES
Parametro 1 | Parametro 2 | Parametro 3 | Parametro 4 | Causa dell'errore |
---|---|---|---|---|
0x00 |
Puntatore all'oggetto processo |
Numero di pagine bloccate |
Puntatore agli stack di driver (se abilitati). In caso contrario, questo parametro è zero. |
Il processo terminato ha pagine di memoria bloccate. Il driver deve sbloccare qualsiasi memoria che potrebbe aver bloccato in un processo, prima che il processo venga terminato. |
0x01 |
MDL specificato dal driver |
Numero corrente di pagine di memoria bloccate in tale processo |
Puntatore agli stack di driver per tale processo (se abilitati). In caso contrario, questo parametro è zero. |
Il driver sta tentando di sbloccare le pagine di memoria del processo che non sono bloccate. |
Causa
Il driver non è riuscito a sbloccare le pagine bloccate (il valore del parametro 1 è 0x0) oppure il driver sta tentando di sbloccare le pagine che non sono state bloccate o che sono già state sbloccate (il valore del parametro 1 è 0x1).
Risoluzione
L'estensione di debug !analyze visualizza informazioni sul controllo dei bug e può essere utile per determinare la causa radice.
Se il valore del parametro 1 è 0x0
Usare prima di tutto l'estensione !search sul puntatore al processo corrente in tutta la memoria fisica. Questa estensione potrebbe trovare almeno un elenco di descrittori di memoria (MDL) che punta al processo corrente. Usare quindi !search in ogni MDL che si trova per ottenere il pacchetto di richiesta di I/O che punta al processo corrente. Da questo IRP è possibile identificare il driver che perde le pagine.
In caso contrario, è possibile rilevare il driver che ha causato l'errore modificando il Registro di sistema:
Nella chiave del Registro di sistema \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management creare o modificare il valore TrackLockedPages e quindi impostarlo su DWORD 1.
Riavviare il computer.
Il sistema salva quindi le analisi dello stack, in modo da poter identificare facilmente il driver che ha causato il problema. Se il driver causa nuovamente lo stesso errore, viene eseguito il controllo dei bug 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) e il nome del driver che causa questo errore viene visualizzato nella schermata blu e memorizzato in memoria nella posizione (PUNICODE_STRING) KiBugCheckDriver.
Se il valore del parametro 1 è 0x1
Esaminare il codice sorgente del driver che blocca e sblocca la memoria e cercare di individuare un'istanza in cui la memoria viene sbloccata senza prima essere bloccata.