Hi,
In my DriverEntry, I am observing a crash when I pass the pointer returned from ExAllocatePoolWithTag. When I inspect the pointer this is what I observed.
The call is
dataBuffer = ExAllocatePoolWithTag( PagedPool, size, ‘ABCD’ ); //where size is 0xb7ae38
=======================================
kd> dc dataBuffer
bad0bbf0 e2800000 00200382 bad0bc64 b92a590e … .d…Y*.
kd> !pool 0xe2800000
Pool page e2800000 region is Paged pool
e2800000 is not a valid small pool allocation, checking large pool…
unable to get pool big page table - either wrong symbols or pool tagging is disabled
e2800000 is freed (or corrupt) pool
Bad allocation size @e2800000, too large
***
*** An error (or corruption) in the pool was detected;
*** Attempting to diagnose the problem.
***
*** Use !poolval e2800000 for more details.
***
Pool page [e2800000] is __inVALID.
Analyzing linked list…
Scanning for single bit errors…
None found
==================end=====================
It clearly says that “Bad allocation size @e2800000, too large”; so I reduced it to 0xAE38, 0x8000, 0x4000; all fails but does return some not-null value; (small sizes go fine 0x200, 0x400.)
Now the query is why it does not return NULL? As per docs; it should.
Any corner case which I am hitting? The OS is XP SP3.
Thanks
Aditya