Some time ago, moi wrote…
I have a program which causes a nonpaged pool leak. I have been getting
figures as large as 200K overnight. At the same time, the number of handles,
as reported by task manager, is not increasing.<…>
After running poolmon for a few hours, I could find 13K of total 23K leaked.
They appear in objects tagged “VadS”, 32 bytes in size, which are allocated at
the average rate of 1 per 40 iterations in my program. I know that VADs deal
with virtual memory management, but this is where my education ends. I will
read some articles on the subject, but from practical rather than academical
standpoint, can anybody suggest a quick way to find a guilty bit?
The tag “Vad”, without the S, does not grow (or does but by very little).
TIA,
-kkm
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
There are three distinct things that can happen:
- leaks, where the kernel is loosing track of NPP, never to be reclaimed.
- movement of memory to look-aside lists (or similar). This is not a leak,
but its possible that memory that migrates to such a list will never move back.
- fragmentation, where there is memory, and the system is keeping track of it,
but it doesn’t end up contiguous.
It doesn’t sound like #3. To distinguish between 1 & 2, run the program for
x hours, kill it, then run it again for x hours, measuring the pool the second time.
If the pool is growing the second time around, you probably have a leak, otherwise
the symptom you are seeing is some variant of #2.
-DH
----- Original Message -----
From: “Kirill ‘Big K’ Katsnelson”
To: “NT Developers Interest List”
Sent: Saturday, May 19, 2001 2:38 AM
Subject: [ntdev] More on: User mode nonpaged pool leaks?
> Some time ago, moi wrote…
> >I have a program which causes a nonpaged pool leak. I have been getting
> >figures as large as 200K overnight. At the same time, the number of handles,
> >as reported by task manager, is not increasing.<…>
>
> After running poolmon for a few hours, I could find 13K of total 23K leaked.
> They appear in objects tagged “VadS”, 32 bytes in size, which are allocated at
> the average rate of 1 per 40 iterations in my program. I know that VADs deal
> with virtual memory management, but this is where my education ends. I will
> read some articles on the subject, but from practical rather than academical
> standpoint, can anybody suggest a quick way to find a guilty bit?
>
> The tag “Vad”, without the S, does not grow (or does but by very little).
>
> TIA,
>
> -kkm
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@syssoftsol.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
—
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Some time ago, Dave Harvey wrote…
There are three distinct things that can happen:
- leaks, where the kernel is loosing track of NPP, never to be reclaimed.
- movement of memory to look-aside lists (or similar). This is not a leak,
but its possible that memory that migrates to such a list will never
move back.
- fragmentation, where there is memory, and the system is keeping track
of it,
but it doesn’t end up contiguous.
This leak was caused by ThreadTerminate. ThreadTerminate was supposed
to be called “if all else failed”, but, because of some contention, it
was called to early, and too often. It apparently left 2 VADs for a
process, 1 page committed and 1MB - 1 page reserved, which looks quite
like the stack of the thread. The memory (and the VADs of course) were
reclaimed upon process termination, but not earlier.
Thank you for your response,
-kkm
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
So this is why oil tankers should have two hulls: If the inner one leaks
the outer one doesn’t?
-DH
----- Original Message -----
From: “Kirill ‘Big K’ Katsnelson”
To: “NT Developers Interest List”
Sent: Tuesday, May 22, 2001 2:52 AM
Subject: [ntdev] Re: More on: User mode nonpaged pool leaks?
> Some time ago, Dave Harvey wrote…
> >There are three distinct things that can happen:
> >
> >1) leaks, where the kernel is loosing track of NPP, never to be reclaimed.
> >2) movement of memory to look-aside lists (or similar). This is not a leak,
> > but its possible that memory that migrates to such a list will never
> > move back.
> >3) fragmentation, where there is memory, and the system is keeping track
> >of it,
> > but it doesn’t end up contiguous.
>
> This leak was caused by ThreadTerminate. ThreadTerminate was supposed
> to be called “if all else failed”, but, because of some contention, it
> was called to early, and too often. It apparently left 2 VADs for a
> process, 1 page committed and 1MB - 1 page reserved, which looks quite
> like the stack of the thread. The memory (and the VADs of course) were
> reclaimed upon process termination, but not earlier.
>
> Thank you for your response,
>
> -kkm
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@syssoftsol.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
—
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com