Hi,
In one of my application, I am doing an IOCTL and its failing with 1450 error, INSUFFICIENT_RESOURCES.
!vm shows pool allocation failure messages. But, I don’t see errors like Event ID 2020 or Event ID 2091 in the event viewer logs.
Can anyone tell why don’t I see the event id 2020 or event id 2019 event viewer logs.
Thanks,
Vinay
At 16:56 01/07/2008, xxxxx@gmail.com wrote:
Hi,
In one of my application, I am doing an IOCTL and its failing with
1450 error, INSUFFICIENT_RESOURCES.
!vm shows pool allocation failure messages. But, I don’t see errors
like Event ID 2020 or Event ID 2091 in the event viewer logs.
Can anyone tell why don’t I see the event id 2020 or event id 2019
event viewer logs.
Thanks,
Vinay
Why should you see those event ID’s ?
The two event ID’s you refer to are specific to the SRV process in
specific circumstances. What device are you sending your IOCTL to
? That will be the device deciding if it has enough resources to
handle your request.
Lots of devices have conditions in which they return insufficient
resources but there’s no requirement on them to do anything with the
event log. All it means to your application is “try again later” and
your application should handle this gracefully.
Mark.
I am trying to root cause an issue where my IOCTL is failing with 1450 error code. one of my application is doing a DIRECT_BUFFERED IOCTL to my driver and fails with 1450 error.
I have also installed debugging tools. !vm shows pool allocation failures.
I found this windows link which specifies the event would be logged by server service about the event id 2020 and event id 2019.
http://blogs.msdn.com/ntdebugging/archive/2006/12/18/Understanding-Pool-Consumption-and-Event-ID_3A00_--2020-or-2019.aspx
Vinay
At 17:15 01/07/2008, xxxxx@gmail.com wrote:
I am trying to root cause an issue where my IOCTL is failing with
1450 error code. one of my application is doing a DIRECT_BUFFERED
IOCTL to my driver and fails with 1450 error.
I have also installed debugging tools. !vm shows pool allocation failures.
I found this windows link which specifies the event would be
logged by server service about the event id 2020 and event id 2019.
http://blogs.msdn.com/ntdebugging/archive/2006/12/18/Understanding-Pool-Consumption-and-Event-ID_3A00_--2020-or-2019.aspx
Vinay
Try reading that article again, the events are generated by the
server service when under certain conditions it can’t acquire the
resources it needs.
Are your application and driver the “server service” ? Probably
not. The blog doesn’t meant that every time there’s a pool
allocation failure that the SRV service puts an event in the event
log. It’s only specific to the operation of the SRV service.
Let’s see some code here. And what on earth is a “DIRECT_BUFFERED IOCTL” ?
What’s the user mode code around DeviceIoControl() and what does the
handler look like in the driver ? Does the ioctl reach the driver
? How big is the buffer attached to the ioctl ?
Mark.
Hi,
Event ID 2019 (Non Paged Pool Depletion) and 2020 (Paged Pool Depletion) is
generally logged by the OS, under the respective scenario, when there is a
Non Paged Pool or Paged Pool leak and kernel uses Srv.sys driver to report
this resource depletion in the Event Log. So, you can expect these events
only if the Non Paged Pool or Paged Pool utilization is extremely high. The
excerpt below should give you some idea about it. The theoretical max value
on Windows 2003 SP1 for Non Paged Pool = 256 MB and Paged Pool = 480 MB, but
these values are decided by the OS at the boot time. The pool allocation
failures that you are noticing could be because of something else.
kd> !vm 1
*** Virtual Memory Usage ***
Physical Memory: 130938 ( 523752 Kb)
Page File: ??\C:\pagefile.sys
Current: 786432 Kb Free Space: 786428 Kb
Minimum: 786432 Kb Maximum: 1572864 Kb
Available Pages: 107743 ( 430972 Kb)
ResAvail Pages: 98552 ( 394208 Kb)
Locked IO Pages: 110 ( 440 Kb)
Free System PTEs: 54647 ( 218588 Kb)
Free NP PTEs: 28734 ( 114936 Kb)
Free Special NP: 0 ( 0 Kb)
Modified Pages: 704 ( 2816 Kb)
Modified PF Pages: 703 ( 2812 Kb)
NonPagedPool Usage: 1913 ( 7652 Kb) <=== If this value
is closing to 128252 KB, then you should see 2019
NonPagedPool Max: 32063 ( 128252 Kb)
PagedPool 0 Usage: 650 ( 2600 Kb)
PagedPool 1 Usage: 329 ( 1316 Kb)
PagedPool 2 Usage: 326 ( 1304 Kb)
PagedPool Usage: 1305 ( 5220 Kb) <== If this
value is closing to 258048 KB, then you should see 2020
PagedPool Maximum: 64512 ( 258048 Kb)
Shared Commit: 612 ( 2448 Kb)
Special Pool: 0 ( 0 Kb)
Shared Process: 1381 ( 5524 Kb)
PagedPool Commit: 1310 ( 5240 Kb)
Driver Commit: 1153 ( 4612 Kb)
Committed pages: 16320 ( 65280 Kb)
Commit limit: 321906 ( 1287624 Kb)
Thanks & Regards
Pushkar Prasad
Phone: +91-9845216412
http://www.eccellente-it.com
“A positive attitude may not solve all your problems, but it will annoy
enough people to make it worth the effort.” -Herm Albright
=============================================================================
Subject: Re: Not seeing Event ID 2020 or 2019 when my IOCTL fails with
1450(INSUFFICIENT_RESOURCE)
From: “Mark S. Edwards”
Date: Tue, 01 Jul 2008 17:07:17 +0100
X-Message-Number: 23
At 16:56 01/07/2008, xxxxx@gmail.com wrote:
>Hi,
>
>In one of my application, I am doing an IOCTL and its failing with
>1450 error, INSUFFICIENT_RESOURCES.
>
>!vm shows pool allocation failure messages. But, I don’t see errors
>like Event ID 2020 or Event ID 2091 in the event viewer logs.
>
>Can anyone tell why don’t I see the event id 2020 or event id 2019
>event viewer logs.
>
>Thanks,
>Vinay
Why should you see those event ID’s ?
The two event ID’s you refer to are specific to the SRV process in
specific circumstances. What device are you sending your IOCTL to
? That will be the device deciding if it has enough resources to
handle your request.
Lots of devices have conditions in which they return insufficient
resources but there’s no requirement on them to do anything with the
event log. All it means to your application is “try again later” and
your application should handle this gracefully.
Mark.