!sysptes 4 doesn't work

!sysptes 4 doesn’t work.
using windows 2003 enterprise edition service pack 1

using microsoft symbol server online

get following error with windbg and local kernel debugging:

!sysptes 4

0x26e System PTEs allocated to mapping locked pages

VA MDL PageCount Caller/CallersCaller
f85fde98: Unable to get System PTE individual lock consumer information

Anyone any ideas?

I need this to get a idea to where the systempte’s are going when i’m using 3gb and pae switches in boot.ini

i set the registry key

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
“TrackPtes”=dword:00000001

and rebooted the vmware machine (same error on physical machine)

Anyone any ideas?

Greeting Bas Hendriks

Looks like nt!_PTE_TRACKER type is not included in public symbols.
As a workaround, you can manually add it to the PDB you got from
the symbol server. The following procedure worked for me:

  1. Create a C file with the following contents:

== PteTracker.c ==
#include <ntddk.h>

typedef struct PTE_TRACKER {
LIST_ENTRY ListEntry;
PMDL Mdl;
PFN_NUMBER Count;
PVOID SystemVa;
PVOID StartVa;
ULONG Offset;
ULONG Length;
PFN_NUMBER Page;
struct {
ULONG IoMapping: 1;
ULONG Matched: 1;
ULONG CacheAttribute : 2;
ULONG Spare : 28;
};
PVOID CallingAddress;
PVOID CallersCaller;
} PTE_TRACKER, *PPTE_TRACKER;

PTE_TRACKER PteTracker;
== end ==

2. Update ntkrnlpa.pdb with this command:

cl.exe /Zi /Gz /c /Fdntkrnlpa.pdb /I /D_X86
=1 PteTracker.c

By the way, if you don’t find any leaks but you still run out of
system PTEs in this configuration, try using /userva switch
and configuring DynamicMemory value as described here:

http://technet.microsoft.com/en-us/library/2b0d4c6e-92b7-410b-876b-367c4043b1c7.aspx


This posting is provided “AS IS” with no warranties, and confers no
rights.

bas.hendriks wrote:

> !sysptes 4 doesn’t work.
> using windows 2003 enterprise edition service pack 1
>
> using microsoft symbol server online
>
> get following error with windbg and local kernel debugging:
>
> !sysptes 4
>
> 0x26e System PTEs allocated to mapping locked pages
>
> VA MDL PageCount Caller/CallersCaller
> f85fde98: Unable to get System PTE individual lock consumer information
>
> Anyone any ideas?
>
> I need this to get a idea to where the systempte’s are going when i’m
> using 3gb and pae switches in boot.ini
>
> i set the registry key
>
> Windows Registry Editor Version 5.00
>
> [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
> Manager\Memory Management]
> “TrackPtes”=dword:00000001
>
> and rebooted the vmware machine (same error on physical machine)
>
> Anyone any ideas?</ntddk.h>

On 4/8/07, Pavel Lebedinsky wrote:
> Looks like nt!PTE_TRACKER type is not included in public symbols.
> As a workaround, you can manually add it to the PDB you got from
> the symbol server. The following procedure worked for me:
>
> 2. Update ntkrnlpa.pdb with this command:
>
> cl.exe /Zi /Gz /c /Fdntkrnlpa.pdb /I /D_X86
=1 PteTracker.c
>
> By the way, if you don’t find any leaks but you still run out of
> system PTEs in this configuration, try using /userva switch
> and configuring DynamicMemory value as described here:
>
> http://technet.microsoft.com/en-us/library/2b0d4c6e-92b7-410b-876b-367c4043b1c7.aspx
>

wow nice info there
if im not wrong in my decryption of this answer
can i assume that i can create my own pdb for sourceless binaries by creating
a few c files and updating with cl/ ?? or take a stripped pdb and
convert it to private pdb

that would be nice if it worked

thanks and regards

“raj_r” wrote:

can i assume that i can create my own pdb for sourceless binaries by
creating
a few c files and updating with cl/ ?? or take a stripped pdb and
convert it to private pdb

As far as I can tell, yes. I believe a similar process is used during
Windows build to generate public ntdll and kernel symbols with
partial type information.


This posting is provided “AS IS” with no warranties, and confers no
rights.