*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
NO_MORE_SYSTEM_PTES (3f)
No System PTEs left. Usually caused by a driver not cleaning up
properly. If kernel debugger available get stack trace and
"!sysptes 3".
Set HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes
to a DWORD 1 value and reboot. Then the system will save stack traces
so the guilty driver can be identified. There is no other way to find out
which driver is neglecting to clean up the I/Os.
A bugcheck DRIVER_USED_EXCESSIVE_PTES will then occur if the system runs out of
PTEs again and the offending driver's name will be printed.
Arguments:
Arg1: 00000000, PTE Type (0 - system expansion, 1 nonpaged pool expansion)
Arg2: 00001000, Requested size
Arg3: 0000961b, Total free system PTEs
Arg4: 00000000, Total system PTEs
System PTE 부족으로 인해 발생.
드라이버를 이용하여 VirtualQuery와 ReadProcessMemory 기능을 구현하였는데,
유저모드에서 프로세스 검사를 하면서 너무 많은 VIrtualQuery와 ReadPRocessMemory를 호출.
해당 에러 발생시 ReadProcessMemory 기능을 사용하기 위하여 유저 버퍼를 공유하기 위하여 MDL을 사용하는중이었으며,
0x01000000 크기의 버퍼사용.
정확한 확인을 위해서는 위에 있는대로 레지스트리 수정 후 !sysptes 명령어를 이용하여 확인.
결국 구조 변경 ㅋ
[참조]
http://maystyle.tistory.com/523
http://driveronline.org/bbs/view.asp?tb=systembbs&no=87
'Kernel mode > BugCheck' 카테고리의 다른 글
BugCheck 0xC2 BAD_POOL_CALLER (0) | 2014.04.22 |
---|---|
BugCheck 0xC1 SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION (0) | 2014.03.21 |
BugCheck 0xD1 DRIVER_IRQL_NOT_LESS_OR_EQUAL (0) | 2014.02.13 |
BugCheck 0x133 DPC_WATCHDOG_VIOLATION (0) | 2013.12.23 |