Controllo bug 0x3F: NO_MORE_SYSTEM_PTES
Il controllo dei bug NO_MORE_SYSTEM_PTES ha un valore di 0x0000003F. Questo è il risultato di un sistema che ha eseguito troppe azioni di I/O. Ciò ha comportato voci di tabella delle pagine di sistema frammentate (PTE).
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 NO_MORE_SYSTEM_PTES
Parametro | Descrizione |
---|---|
1 |
0: tipo PTE di espansione del sistema 1: tipo PTE di espansione del pool non di pagine |
2 |
Dimensioni della richiesta di memoria |
3 |
Totale ptes di sistema gratuito |
4 |
Totale ptes di sistema |
Causa
In quasi tutti i casi, il sistema non è effettivamente fuori dalle PTE. Un driver ha invece richiesto un blocco di memoria di grandi dimensioni, ma non esiste un blocco contiguo di dimensioni sufficienti per soddisfare questa richiesta.
Spesso i driver video allocheranno grandi quantità di memoria kernel che devono avere esito positivo. Alcuni programmi di backup eseguono la stessa operazione.
Risoluzione
Una possibile soluzione alternativa: Modificare il Registro di sistema per aumentare il numero totale di PTE di sistema. In caso contrario, rimuovere qualsiasi software installato di recente, in particolare le utilità di backup o le applicazioni a elevato utilizzo di disco.
Debug del problema: Il metodo seguente può essere usato per eseguire il debug del controllo dei bug 0x3F.
Ottenere prima di tutto un'analisi dello stack e usare il comando di estensione !sysptes 3 .
Impostare quindiHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes uguale a DWORD 1 e riavviare. In questo modo il sistema salva le tracce dello stack.
In questo modo è possibile visualizzare informazioni più dettagliate sui proprietari PTE. Ad esempio:
0: kd> !sysptes 4
0x2c47 System PTEs allocated to mapping locked pages
VA MDL PageCount Caller/CallersCaller
f0e5db48 eb6ceef0 1 ntkrpamp!MmMapLockedPages+0x15/ntkrpamp!IopfCallDriver+0x35
f0c3fe48 eb634bf0 1 netbt!NbtTdiAssociateConnection+0x1f/netbt!DelayedNbtProcessConnect+0x17c
f0db38e8 eb65b880 1 mrxsmb!SmbMmAllocateSessionEntry+0x89/mrxsmb!SmbCepInitializeExchange+0xda
f8312568 eb6df880 1 rdbss!RxCreateFromNetRoot+0x3d7/rdbss!RxCreateFromNetRoot+0x93
f8363908 eb685880 1 mrxsmb!SmbMmAllocateSessionEntry+0x89/mrxsmb!SmbCepInitializeExchange+0xda
f0c54248 eb640880 1 rdbss!RxCreateFromNetRoot+0x3d7/rdbss!RxCreateFromNetRoot+0x93
f0ddf448 eb5f3160 1 mrxsmb!MrxSmbUnalignedDirEntryCopyTail+0x387/mrxsmb!MRxSmbCoreInformation+0x36
f150bc08 eb6367b0 1 mrxsmb!MrxSmbUnalignedDirEntryCopyTail+0x387/mrxsmb!MRxSmbCoreInformation+0x36
f1392308 eb6fba70 1 netbt!NbtTdiOpenAddress+0x1fb/netbt!DelayedNbtProcessConnect+0x17c
eb1bee64 edac5000 200 VIDEOPRT!pVideoPortGetDeviceBase+0x118/VIDEOPRT!VideoPortMapMemory+0x45
f139b5a8 edd4b000 12 rdbss!FsRtlCopyWrite2+0x34/rdbss!RxDriverEntry+0x149
eb41f400 ede92000 20 VIDEOPRT!pVideoPortGetDeviceBase+0x139/VIDEOPRT!VideoPortGetDeviceBase+0x1b
eb41f198 edf2a000 20 NDIS!NdisReadNetworkAddress+0x3a/NDIS!NdisFreeSharedMemory+0x58
eb41f1e4 eb110000 10 VIDEOPRT!pVideoPortGetDeviceBase+0x139/VIDEOPRT!VideoPortGetDeviceBase+0x1b
......
Se il sistema esaurisce di nuovo i ptes dopo l'impostazione del valore del Registro di sistema TrackPtes , il controllo dei bug 0xD8 (DRIVER_USED_EXCESSIVE_PTES) verrà emesso invece di 0x3F. Verrà visualizzato anche il nome del driver che causa questo errore.