Comprobación de errores 0x3F: NO_MORE_SYSTEM_PTES
La comprobación de errores NO_MORE_SYSTEM_PTES tiene un valor de 0x0000003F. Este es el resultado de un sistema que ha realizado demasiadas acciones de E/S. Esto ha dado lugar a entradas de tabla de páginas del sistema fragmentadas (PTE).
Importante
Este artículo es para programadores. Si es un cliente que ha recibido un código de error de pantalla azul mientras usa el equipo, consulte Solución de errores de pantalla azul.
parámetros de NO_MORE_SYSTEM_PTES
Parámetro | Descripción |
---|---|
1 |
0: tipo PTE de expansión del sistema 1: tipo de PTE de expansión de grupo no paginado |
2 |
Tamaño de la solicitud de memoria |
3 |
Total de PTE del sistema libre |
4 |
Número total de PTE del sistema |
Causa
En casi todos los casos, el sistema no está realmente fuera de los PTE. En su lugar, un controlador ha solicitado un gran bloque de memoria, pero no hay ningún bloque contiguo de tamaño suficiente para satisfacer esta solicitud.
A menudo, los controladores de vídeo asignarán grandes cantidades de memoria del kernel que deben realizarse correctamente. Algunos programas de copia de seguridad hacen lo mismo.
Resolución
Una posible solución alternativa: Modifique el registro para aumentar el número total de PTE del sistema. Si esto no ayuda, quite cualquier software instalado recientemente, especialmente las utilidades de copia de seguridad o las aplicaciones que consumen disco.
Depuración del problema: El método siguiente se puede usar para depurar la comprobación de errores 0x3F.
En primer lugar, obtenga un seguimiento de pila y use el comando de extensión !sysptes 3 .
A continuación, establezca HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes igual a DWORD 1 y reinicie. Esto hará que el sistema guarde los seguimientos de la pila.
Esto le permite mostrar información más detallada sobre los propietarios de PTE. Por ejemplo:
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
......
Si el sistema se queda sin PTE de nuevo después de establecer el valor del Registro TrackPtes , se emitirá la comprobación de errores 0xD8 (DRIVER_USED_EXCESSIVE_PTES) en lugar de 0x3F. También se mostrará el nombre del controlador que provoca este error.