Verifier and Special Pool testing

I have a strange one.

I have a bus driver that enumerates two interfaces for each instance of a
particular HDD that it detects. This all works fine until I turn Special
Pool on in Driver Verifier. With Special Pool enabled, the bus driver
generates the PDOs for each child, but the child’s driver is not loaded nor
is the child’s DriverEntry ever called. The problem is that Driver Verifier
does not complain about anything. There is no ASSERT, message or stop
associated with whatever it does not like. I’ve also used GFLAGS to maybe
quantify or qualify the problem with the same result … the child drivers
do not load and DV does not complain.


Gary G. Little

Gary,

Do this on a checked build. Before the bus driver starts its
enumerations, do the following:

ed NT!Kd_NTOSPNP_Mask 0xFFFFFFFF

ed NT!Kd_PNPMGR_Mask 0xFFFFFFFF

You will then see the DEVNODE and data on the driver loads. Using the
!devnode debugger extension you can then see the state history. This should
give you a good clue, or at least more data to post to get the answer.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting

“Gary G. Little” wrote in message
news:xxxxx@ntdev…
> I have a strange one.
>
> I have a bus driver that enumerates two interfaces for each instance of a
> particular HDD that it detects. This all works fine until I turn Special
> Pool on in Driver Verifier. With Special Pool enabled, the bus driver
> generates the PDOs for each child, but the child’s driver is not loaded
nor
> is the child’s DriverEntry ever called. The problem is that Driver
Verifier
> does not complain about anything. There is no ASSERT, message or stop
> associated with whatever it does not like. I’ve also used GFLAGS to maybe
> quantify or qualify the problem with the same result … the child drivers
> do not load and DV does not complain.
>
> –
> Gary G. Little
>
>
>

Did you receive QUERY_ID/TEXT after you reported the PDOs?

Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com

-----Original Message-----
From: Gary G. Little [mailto:xxxxx@sbcglobal.net]
Sent: Thursday, September 09, 2004 12:28 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Verifier and Special Pool testing

I have a strange one.

I have a bus driver that enumerates two interfaces for each
instance of a
particular HDD that it detects. This all works fine until I
turn Special
Pool on in Driver Verifier. With Special Pool enabled, the bus driver
generates the PDOs for each child, but the child’s driver is
not loaded nor
is the child’s DriverEntry ever called. The problem is that
Driver Verifier
does not complain about anything. There is no ASSERT, message or stop
associated with whatever it does not like. I’ve also used
GFLAGS to maybe
quantify or qualify the problem with the same result … the
child drivers
do not load and DV does not complain.


Gary G. Little


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@ati.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

RE: [ntdev] Verifier and Special Pool testingI see no difference in the PDO IRP’s received with or without Special Pool.


The personal opinion of
Gary G. Little
“Calvin Guan” wrote in message news:xxxxx@ntdev…
Did you receive QUERY_ID/TEXT after you reported the PDOs?

-
Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com

> -----Original Message-----
> From: Gary G. Little [mailto:xxxxx@sbcglobal.net]
> Sent: Thursday, September 09, 2004 12:28 PM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] Verifier and Special Pool testing
>
>
> I have a strange one.
>
> I have a bus driver that enumerates two interfaces for each
> instance of a
> particular HDD that it detects. This all works fine until I
> turn Special
> Pool on in Driver Verifier. With Special Pool enabled, the bus driver
> generates the PDOs for each child, but the child’s driver is
> not loaded nor
> is the child’s DriverEntry ever called. The problem is that
> Driver Verifier
> does not complain about anything. There is no ASSERT, message or stop
> associated with whatever it does not like. I’ve also used
> GFLAGS to maybe
> quantify or qualify the problem with the same result … the
> child drivers
> do not load and DV does not complain.
>
> –
> Gary G. Little
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@ati.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

It sounds like an unload problem to me (since it sounds like the function driver loads once and then stops). Are you sure the refcount on the PDO’s function driver went to zero when it was first enumerated? Put a break on write on the object’s ref count starting with the PDO’s function remove handler and see if it goes down all the way.

d


From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Gary G. Little
Sent: Thursday, September 09, 2004 9:58 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Verifier and Special Pool testing

I see no difference in the PDO IRP’s received with or without Special Pool.


The personal opinion of
Gary G. Little
“Calvin Guan” wrote in message news:xxxxx@ntdev…
Did you receive QUERY_ID/TEXT after you reported the PDOs?
-
Calvin Guan??? Software Engineer
ATI Technologies Inc.? www.ati.com
> -----Original Message-----
> From: Gary G. Little [mailto:xxxxx@sbcglobal.net]
> Sent: Thursday, September 09, 2004 12:28 PM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] Verifier and Special Pool testing
>
>
> I have a strange one.
>
> I have a bus driver that enumerates two interfaces for each
> instance of a
> particular HDD that it detects. This all works fine until I
> turn Special
> Pool on in Driver Verifier. With Special Pool enabled, the bus driver
> generates the PDOs for each child, but the child’s driver is
> not loaded nor
> is the child’s DriverEntry ever called. The problem is that
> Driver Verifier
> does not complain about anything. There is no ASSERT, message or stop
> associated with whatever it does not like. I’ve also used
> GFLAGS to maybe
> quantify or qualify the problem with the same result … the
> child drivers
> do not load and DV does not complain.
>
> –
> Gary G. Little
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@ati.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

Doron,

This only happens when Special Pool is enabled in verifier. If special pool
is NOT enabled then the child drivers load, DriverEntry is called, AddDevice
is called and they then catch their respective Start device calls. If
Special Pool is enabled none of that happens. How can this be an unload
problem when I am not unloading the FDO of the bus driver and the unload
functions are NOT being called?


The personal opinion of
Gary G. Little

“Doron Holan” wrote in message
news:xxxxx@ntdev…
It sounds like an unload problem to me (since it sounds like the function
driver loads once and then stops). Are you sure the refcount on the PDO’s
function driver went to zero when it was first enumerated? Put a break on
write on the object’s ref count starting with the PDO’s function remove
handler and see if it goes down all the way.

d

________________________________________
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Gary G. Little
Sent: Thursday, September 09, 2004 9:58 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Verifier and Special Pool testing

I see no difference in the PDO IRP’s received with or without Special Pool.


The personal opinion of
Gary G. Little
“Calvin Guan” wrote in message news:xxxxx@ntdev…
Did you receive QUERY_ID/TEXT after you reported the PDOs?
-
Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com
> -----Original Message-----
> From: Gary G. Little [mailto:xxxxx@sbcglobal.net]
> Sent: Thursday, September 09, 2004 12:28 PM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] Verifier and Special Pool testing
>
>
> I have a strange one.
>
> I have a bus driver that enumerates two interfaces for each
> instance of a
> particular HDD that it detects. This all works fine until I
> turn Special
> Pool on in Driver Verifier. With Special Pool enabled, the bus driver
> generates the PDOs for each child, but the child’s driver is
> not loaded nor
> is the child’s DriverEntry ever called. The problem is that
> Driver Verifier
> does not complain about anything. There is no ASSERT, message or stop
> associated with whatever it does not like. I’ve also used
> GFLAGS to maybe
> quantify or qualify the problem with the same result … the
> child drivers
> do not load and DV does not complain.
>
> –
> Gary G. Little
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@ati.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

So I take your advice Don and install the checked builds NTOSKRNL and HAL,
change the boot.ini to load the checked builds and rapidly enter Activation
Hell. Booting to the checked builds wants to activate XP, so I activate XP
and it can’t because there is no internet connection, so I say "Ok … a one
shot deal, use the phone … so I use the phone, give the VOICE the
installation ID … the VOICE then gives me the confirmation ID, I select
Next and Finish and the system FAULTS on activation. Now I’m in a wicked
wicked loop, AND it has bled over into the free build boot.

This is a MULE system a TARGET which I use to work on drivers for HBAs for
discs. I’ve got close to a terabyte of HDD that was not there the day XP was
installed. and a half a dozen HBAs that I change daily sometimes — so now
I can’t activate XP.

This has become a royal pain in the ass.


The personal opinion of
Gary G. Little

“Don Burn” wrote in message news:xxxxx@ntdev…
> Gary,
>
> Do this on a checked build. Before the bus driver starts its
> enumerations, do the following:
>
> ed NT!Kd_NTOSPNP_Mask 0xFFFFFFFF
>
> ed NT!Kd_PNPMGR_Mask 0xFFFFFFFF
>
> You will then see the DEVNODE and data on the driver loads. Using the
> !devnode debugger extension you can then see the state history. This
should
> give you a good clue, or at least more data to post to get the answer.
>
>
> –
> Don Burn (MVP, Windows DDK)
> Windows 2k/XP/2k3 Filesystem and Driver Consulting
>
>
>
> “Gary G. Little” wrote in message
> news:xxxxx@ntdev…
> > I have a strange one.
> >
> > I have a bus driver that enumerates two interfaces for each instance of
a
> > particular HDD that it detects. This all works fine until I turn Special
> > Pool on in Driver Verifier. With Special Pool enabled, the bus driver
> > generates the PDOs for each child, but the child’s driver is not loaded
> nor
> > is the child’s DriverEntry ever called. The problem is that Driver
> Verifier
> > does not complain about anything. There is no ASSERT, message or stop
> > associated with whatever it does not like. I’ve also used GFLAGS to
maybe
> > quantify or qualify the problem with the same result … the child
drivers
> > do not load and DV does not complain.
> >
> > –
> > Gary G. Little
> >
> >
> >
>
>
>

In case it isn’t obvious, it’s often pointless to activate test machines
at all… The OS will run fine for 30 days (or something) without it.
Keep a backup of the installed image so you can test fresh installs, and
restore it at least this often.

Gary G. Little wrote:

So I take your advice Don and install the checked builds NTOSKRNL and HAL,
change the boot.ini to load the checked builds and rapidly enter Activation
Hell. Booting to the checked builds wants to activate XP, so I activate XP
and it can’t because there is no internet connection, so I say "Ok … a one
shot deal, use the phone … so I use the phone, give the VOICE the
installation ID … the VOICE then gives me the confirmation ID, I select
Next and Finish and the system FAULTS on activation. Now I’m in a wicked
wicked loop, AND it has bled over into the free build boot.

This is a MULE system a TARGET which I use to work on drivers for HBAs for
discs. I’ve got close to a terabyte of HDD that was not there the day XP was
installed. and a half a dozen HBAs that I change daily sometimes — so now
I can’t activate XP.

This has become a royal pain in the ass.


…/ray..

Please remove “.spamblock” from my email address if you need to contact
me outside the newsgroup.

I’m the type that always activates, guess I simply hate the bitch box you
get if you don’t, but thus far activation has never been a problem,
irregardless of the HDD or HBA mix. In this instance I think it was a bad
case of fat-finger in setting things up or a something got corrupted while
doing driver testing. Anyway … I restored a fresh copy of XP, applied SP2
and ghosted that to a new image, and set up boot.ini to load the checked
builds of the HAL and kernel. There is joy tonight in Muddville.


The personal opinion of
Gary G. Little

“Ray Trent” wrote in message
news:xxxxx@ntdev…
> In case it isn’t obvious, it’s often pointless to activate test machines
> at all… The OS will run fine for 30 days (or something) without it.
> Keep a backup of the installed image so you can test fresh installs, and
> restore it at least this often.
>
> Gary G. Little wrote:
>
> > So I take your advice Don and install the checked builds NTOSKRNL and
HAL,
> > change the boot.ini to load the checked builds and rapidly enter
Activation
> > Hell. Booting to the checked builds wants to activate XP, so I activate
XP
> > and it can’t because there is no internet connection, so I say "Ok … a
one
> > shot deal, use the phone … so I use the phone, give the VOICE the
> > installation ID … the VOICE then gives me the confirmation ID, I
select
> > Next and Finish and the system FAULTS on activation. Now I’m in a wicked
> > wicked loop, AND it has bled over into the free build boot.
> >
> > This is a MULE system a TARGET which I use to work on drivers for HBAs
for
> > discs. I’ve got close to a terabyte of HDD that was not there the day XP
was
> > installed. and a half a dozen HBAs that I change daily sometimes — so
now
> > I can’t activate XP.
> >
> > This has become a royal pain in the ass.
> >
>
> –
> …/ray..
>
> Please remove “.spamblock” from my email address if you need to contact
> me outside the newsgroup.
>