バグ チェック 0x3F: NO_MORE_SYSTEM_PTES

NO_MORE_SYSTEM_PTES バグ チェックには、0x0000003F の値があります。 これは、I/O アクションが多すぎるシステムの結果です。 これにより、断片化されたシステム ページ テーブル エントリ (PTE) が発生しました。

重要

この記事は、プログラマー向けです。 コンピューターを使用中に、ブルー スクリーン エラーが表示された場合は、「ブルー スクリーン エラーのトラブルシューティング」を参照してください。

NO_MORE_SYSTEM_PTES パラメーター

パラメーター 説明

1

0: システム拡張 PTE タイプ

1: 非ページ プール拡張 PTE タイプ

2

メモリ要求のサイズ

3

無料システム PTE の合計

4

システム全体の PTE

原因

ほとんどの場合、システムが PTE 不足になることはありません。 むしろ、ドライバーは大きなメモリ ブロックを要求しましたが、この要求を満たすのに十分なサイズの連続したブロックはありません。

多くの場合、ビデオ ドライバーは、成功する必要がある大量のカーネル メモリを割り当てます。 一部のバックアップ プログラムでも同じ処理が行われます。

解決方法

考えられる回避策: レジストリを変更して、システム PTE の合計数を増やします。 それでも問題が解決しない場合は、最近インストールされたソフトウェア (特にバックアップ ユーティリティまたはディスク集中型アプリケーション) を削除します。

問題のデバッグ: バグ チェック 0x3F をデバッグするには、次のメソッドを使用できます。

まず、スタック トレースを取得し、!sysptes 3 拡張コマンドを使用します。

次に、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes を DWORD 1 に設定して再起動します。 これにより、システムはスタック トレースを保存します。

これにより、PTE 所有者に関する詳細情報を表示できます。 次に例を示します。

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
......

TrackPtes レジストリ値が設定された後にシステムが PTE を使い切った場合、0x3F ではなくバグ チェック 0xD8 (DRIVER_USED_EXCESSIVE_PTES) が発行されます。 このエラーの原因となったドライバーの名前も表示されます。