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.