I have build my driver with CUV enabled and run the driver with the Driver
Verifier enabled. On driver unload I get the verifier bugcheck
C4 - 60: A driver has forgotten to free its pool allocations prior to
unloading.
I do not get the bugcheck in the driver built without CUV!
I have checked all my memory allocations and use my own tags.
The WinDgb !verifier command shows:
…
Driver Verification List
Entry State NonPagedPool PagedPool Module
82aebf10 Loaded&Unloaded 00000048 00000000 mydrv.sys
Current Pool Allocations 00000000 00000002
Current Pool Bytes 00000000 00000048
Peak Pool Allocations 00000002 00000015
Peak Pool Bytes 00000070 000006a4
PoolAddress SizeInBytes Tag CallersAddress
834c6fd8 0x00000024 D+Pt f5a5df22
8352afd8 0x00000024 D+Pt f5a5df22
The driver failed to free to allocations of 0x24 bytes with tag D+Pt.
That tag is none of the tags I use.
The caller address points to:
mydrv!DDKExtPoolCreateEntry+24
[d:\nt\sdktools\ddk\ddk_ext\verifier\pooltrak.cpp @ 295]:
After eliminating pool allocations as a cause I was wondering if I wasn’t
freeing list entries correctly. But I that is not the case either. I don’t
use Lookasidelists which could be a cause for a memory leak.
Is this a CUV bug I stumbled on or are there other driver bugs that might
cause this bugcheck?
Thanks
Gernot Seidler
Vibren Technologies, Inc.
“Gernot Seidler” wrote in message
news:xxxxx@ntdev…
>
> I have build my driver with CUV enabled and run the driver with the Driver
> Verifier enabled. On driver unload I get the verifier bugcheck
> C4 - 60: A driver has forgotten to free its pool allocations prior to
> unloading.
>
> I do not get the bugcheck in the driver built without CUV!
>
…
> Is this a CUV bug I stumbled on or are there other driver bugs that might
> cause this bugcheck?
>
Thanks for that extrodinarily clear description of what you’re seeing.
In a word, yes. You’ve hit a CUV bug (“D+” is CUV’s pool tag). Did you
perhaps happen to get a “CUV Internal Error” message at some point? If so,
this bug has been recently found and fixed.
Thanks again for the excellent error description. Any additional
information you can provide about CUV’s behavior during this run of your
driver would be helpful in narrowing down the cause,
Peter
OSR
Peter,
thanks for the quick reply.
No, I have not seen the message “CUV Internal Error”.
The driver I am writing is a plain PCI WDM function driver. Nothing
special.
You can probably reproduce the bug with toaster.
I am using the W2k3 DDK build 3790 and build the driver for W2k3.
The driver runs on W2k3 build 3790 as well.
I hope this information helps tracking down the bug.
PS: CUV is a great tool. We used it for the first time on a “real driver”
and it found a couple of hidden bugs. It saved us a lot of debugging time.
Gernot Seidler
Vibren Technologies, Inc.
“Gernot Seidler” wrote in message
> news:xxxxx@ntdev…
> >
> > I have build my driver with CUV enabled and run the driver with the Driver
> > Verifier enabled. On driver unload I get the verifier bugcheck
> > C4 - 60: A driver has forgotten to free its pool allocations prior to
> > unloading.
> >
> > I do not get the bugcheck in the driver built without CUV!
> >
> …
> > Is this a CUV bug I stumbled on or are there other driver bugs that might
> > cause this bugcheck?
> >
>
> Thanks for that extrodinarily clear description of what you’re seeing.
>
> In a word, yes. You’ve hit a CUV bug (“D+” is CUV’s pool tag). Did you
> perhaps happen to get a “CUV Internal Error” message at some point? If so,
> this bug has been recently found and fixed.
>
> Thanks again for the excellent error description. Any additional
> information you can provide about CUV’s behavior during this run of your
> driver would be helpful in narrowing down the cause,
>
> Peter
> OSR
“Gernot Seidler” wrote in message
news:xxxxx@ntdev…
>
>
> You can probably reproduce the bug with toaster.
>
Hey Gernot,
Well, we haven’t been able to repro the bug using Toaster in the past, which
is why I asked.
Sigh! Time to file an internal bug…
Peter