Previous Next

Bug Check 0xC1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION

The SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION bug check has a value of 0x000000C1. This indicates that the driver wrote to an invalid section of the special memory pool.

Parameters

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

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause of Error
Address that the driver tried to free Reserved 0 0x20 A driver attempted to free pool which was not allocated.
Address that the driver tried to free Bytes requested Bytes calculated (actually given to the caller) 0x21,
0x22
A driver attempted to free a bad address.
Address that the driver tried to free Address where bits are corrupted Reserved 0x23 A driver freed an address while nearby bytes on same page have been corrupted.
Address that the driver tried to free Address where bits are corrupted Reserved 0x24 A driver freed an address when bytes after end of allocation have been overwritten.
Current IRQL Pool type Number of bytes 0x30 A driver attempted to allocate pool at incorrect IRQL.
Current IRQL Pool type Address that the driver tried to free 0x31 A driver attempted to free pool at incorrect IRQL.

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

Cause

A driver has written to an invalid section of the special memory pool.

Resolving the Problem

Obtain a backtrace of the current thread. This backtrace will usually reveal the source of the error.

For information about the special pool, see Special Memory Pool.