Previous Next

Bug Check 0xC2: BAD_POOL_CALLER

The BAD_POOL_CALLER bug check has a value of 0x000000C2. This indicates that the current thread is making a bad pool request.

Parameters

The following parameters are displayed on the blue screen. Parameter 1 indicates the type of violation.

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause of Error
0x00 0 Pool type Pool tag The current thread requested a zero-byte pool allocation.
0x01,
0x02,
or
0x04
Pointer to pool header First part of pool header contents 0 The pool header has been corrupted.
0x06 Reserved Pointer to pool header Pool header contents The current thread attempted to free pool which was already freed.
0x07 Reserved Memory contents of the pool block Pointer to pool header The current thread attempted to free pool which was already freed.
0x08 Current IRQL Pool type Size of allocation, in bytes The current thread attempted to allocate pool at an invalid IRQL.
0x09 Current IRQL Pool type Address of pool The current thread attempted to free pool at an invalid IRQL.
0x0A Address of pool Allocator's tag Tag being used in the attempted free The current thread attempted to free pool memory using the wrong tag.

(The memory may belong to another component.)

0x0B,
0x0C,
or
0x0D
Address of pool Pool allocation's tag Bad quota process pointer The current thread attempted to release a quota on a corrupted pool allocation.
0x40 Starting address Start of system address space 0 The current thread attempted to free kernel pool at user-mode address.
0x41 Starting address Physical page frame Highest physical page frame The current thread attempted to free a nonallocated nonpaged pool address.
0x42
or
0x43
Address being freed 0 0 The current thread attempted to free a virtual address that was never in any pool.
0x50 Starting address Start offset in pages from beginning of paged pool Size of paged pool, in bytes The current thread attempted to free a nonallocated paged pool address.
0x60 Starting address 0 0 The current thread attempted to free an invalid contiguous memory address.

(The caller of MmFreeContiguousMemory s passing a bad pointer.)

0x99 Address being freed 0 0 The current thread attempted to free pool with an invalid address.

(This code can also indicate corruption in pool header.)

0x9A Pool type Number of bytes requested Pool tag The current thread marked an allocation request MUST_SUCCEED.

(This pool type is no longer supported.)

0x9B Pool type Number of bytes requested Caller's address The current thread attempted to allocate a pool with a tag of zero.

(This would be untrackable, and possibly corrupt the existing tag tables.)

0x9C Pool type Number of bytes requested Caller's address The current thread attempted to allocate a pool with a tag of "BIG".

(This would be untrackable, and possibly corrupt the existing tag tables.)


The _POOL_TYPE codes are enumerated in ntddk.h. In particular, zero indicates nonpaged pool and one indicates paged pool.

Cause

A bad pool request has been made by the current thread.

Resolving the Problem

Activate Driver Verifier to obtain more information about these errors. For details, see Driver Verifier.