| [oR] Appendix B. Bugcheck Codes System Stop messages, also known as bugchecks, display as codes, which designate the reason for the system panic. Depending upon the bugcheck code, up to four parameters provide additional information about the cause and location of the problem. The purpose of this appendix is to provide a list of the more common bugcheck codes that a driver author may encounter. The meanings and common causes of the codes, along with the meanings of the additional parameters, are listed. Table | Bugcheck 0x0A | IRQL_NOT_LESS_OR_EQUAL | | The driver accessed paged memory at DISPATCH_LEVEL or above. | | Parameter | Description | | 1 align="center" | Memory referenced | | 2 align="center" | IRQL at time of reference | | 3 align="center" | 0: Read operation | | | 1: Write operation | | 4 align="center" | Address that referenced memory | Table | Bugcheck 0x1E | KMODE_EXCEPTION_NOT_HANDLED | | A kernel-mode program generated an unhandled exception. | | Parameter | Description | | 1 align="center" | Exception Code | | 2 align="center" | Address where exception occurred | | 3 align="center" | Parameter 0 of exception | | 4 align="center" | Parameter 1 of exception | Table | Bugcheck 0x24 | NTFS_FILE_SYSTEM | | A problem occurred in ntfs. sys. | | Parameter | Description | | 1 | Source file and line number | | 2 | Address of the exception record (optional) | | 3 | Address of the context record (optional) | | 4 | Address where the original exception occurred (optional) | Table | Bugcheck 0x2E | DATA_BUS_ERROR | | Typically indicates that a parity error in system memory has been detected; usually a hardware problem. | | Parameter | Description | | 1 | Virtual address that caused the fault | | 2 | Physical address that caused the fault | | 3 | Processor status register (PSR) | | 4 | Faulting instruction register (FIR) | Table | Bugcheck 0x35 | NO_MORE_IRP_STACK_LOCATIONS | | The IoCallDriver packet has no remaining stack locations. | | Parameter | Description | | 1 | Address of the IRP | | 2 4 | Reserved | Table | Bugcheck 0x3F | NO_MORE_SYSTEM_PTES | | A fragmented system page table exists. | | Parameter | Description | | 1 4 | Reserved | Table | Bugcheck 0x50 | PAGE_FAULT_IN_NONPAGED_AREA | | Invalid system memory has been referenced. | | Parameter | Description | | 1 | Memory address referenced | | 2 | 0: Read | | | 1: Write | | 3 | Address that referenced memory (if known) | | 4 | Reserved | Table | Bugcheck 0x58 | FTDISK_INTERNAL_ERROR | | System booted from the wrong copy of a mirrored partition. | | Parameter | Description | | 1 4 | Reserved | Table | Bugcheck 0x76 | PROCESS_HAS_LOCKED_PAGES | | A driver failed to release locked pages after an I/O operation. | | Parameter | Description | | 1 | 0 | | 2 | Process address | | 3 | Number of locked pages | | 4 | 0, or pointer to driver stacks | Table | Bugcheck 0x77 | KERNEL_STACK_INPAGE_ERROR | | The requested page of kernel data from the paging file could not be read into memory. | | Parameter | Description | | 1 | Status code or 0 | | 2 | Value found in stack where signature should be or I/O status code | | 3 | 0 or page file number | | 4 | Address of signature on kernel stack or offset into page file | Table | Bugcheck 0x79 | MISMATCHED_HAL | | The Hardware Abstraction Layer (HAL) revision level or configuration does not match that of the kernel or the machine. | | Parameter | Description | | 1 | 1: PRCB release-level mismatch | | | 2: Build type mismatch | | | 3: Micro Channel mismatch | | 2 | 1: Release level of ntoskrnl.exe | | | 2: Build type of ntoskrnl.exe | | | 3: Machine type detected during boot | | 3 | 1: Release level of hal.dll | | | 2: Build type of hal.dll | | | 3: Machine type supported by HAL | | 4 | Reserved | Table | Bugcheck 0x7A | KERNEL_DATA_INPAGE_ERROR | | The requested page of kernel data from the paging file could not be read into memory. | | Parameter | Description | | 1 | Lock type that was held or page table entry address | | 2 | I/O status code | | 3 | If lock type is 1 or 2: current process | | | If lock type is 3: virtual address | | 4 | Virtual address that could not be paged into memory | Table | Bugcheck 0x7B | INACCESSIBLE_BOOT_DEVICE | | Windows 2000 has lost access to the system partition during startup. This error always occurs while the system is starting and cannot be debugged because it generally occurs before the operating system has loaded the debugger. | | Parameter | Description | | 1 | Address of the device object that could not be mounted | | 2 | 0 | | 3 | 0 | | 4 | 0 | Table | Bugcheck 0x7F | UNEXPECTED_KERNEL_MODE_TRAP | | A trap, which the Kernel did not catch, was generated by the Intel CPU. | | Parameter | Description | | 1 4 | Reserved | Table | Bugcheck 0x9F | DRIVER_POWER_STATE_FAILURE | | The driver is in an inconsistent or invalid power state. | | Parameter | Description | | 1 | 1: The device object being freed still has an outstanding power request that it has not completed | | | 2: The device object completed the IRP for the system power state request, but failed to call PoStartNextPowerIrp | | | 3: The device driver did not properly set the IRP as pending or complete the IRP | | | 100: The device objects in the devnode were inconsistent in their use of DO_POWER_PAGABLE | | | 101: A parent device object has detected that a child device has not set the DO_POWER_PAGABLE bit | | 2 | 1: Pointer to the device object | | | 2: Pointer to the target device object | | | 3: Pointer to the target device object | | | 100: Pointer to the nonpaged device object | | | 101: Child device object (FDO) | | 3 | 1: Reserved | | | 2: Pointer to the device object | | | 3: Pointer to the device object | | | 100: Pointer to the target device object | | | 101: Child device object (PDO) | | 4 | 1: Reserved | | | 2: Reserved | | | 3: The IRP | | | 100: Pointer to the device object to notify | | | 101: Parent device object | Table | Bugcheck 0xBE | ATTEMPTED_WRITE_TO_READONLY_MEMORY | | A driver attempted to write to a read-only memory segment. | | Parameter | Description | | 1 | Virtual address of attempted write | | 2 | PTE contents | | 3 4 | Reserved | Table | Bugcheck 0xC1 | SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION | | The driver wrote to an invalid section of the special memory pool. | | Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Description | | Address that the driver tried to free | Reserved | 0 | 0x20 | Attempt to free pool that was not allocated | | Address that the driver tried to free | Bytes requested | Bytes calculated | 0x21, 0x22 | Attempt to free a bad address | | Address that the driver tried to free | Address where bits are corrupted | Reserved | 0x23 | Freeing an address when nearby bytes on same page have been corrupted | | Address that the driver tried to free | Address where bits are corrupted | Reserved | 0x24 | Freeing an address when bytes after end of allocation have been overwritten | | Current IRQL | Pool type | Number of bytes | 0x30 | Attempt to allocate pool at incorrect IRQL | | Current IRQL | Pool type | Address that the driver tried to free | 0x31 | Attempt to free pool at incorrect IRQL | Table | Bugcheck 0xC2 | BAD_POOL_CALLER | | The current thread is making a bad pool request. | | Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Description | | 0x01, 0x02, or 0x04 | Pointer to pool header | First part of pool header contents | 0 | Pool header has been corrupted | | 0x06 | Reserved | Pointer to pool header | Pool header contents | Attempt to free pool that was already freed | | 0x07 | Reserved | Pointer to pool header | 0 | Attempt to free pool that was already freed | | 0x08 | Current IRQL | Pool type | Size of allocation | Attempt to allocate pool at an invalid IRQL | | 0x09 | Current IRQL | Pool type | Address of pool | Attempt to free pool at an invalid IRQL | | 0x40 | Starting address | Start of system address space | 0 | Attempt to free Kernel pool at user-mode address | | 0x41 | Starting address | Physical page frame | Highest physical page frame | Attempt to free a nonallocated nonpaged pool address | | 0x50 | Starting address | Start offset in pages from beginning of paged pool | Size of paged pool, in bytes | Attempt to free a nonallocated paged pool address | | 0x99 | Address being freed | 0 | 0 | Attempt to free pool with invalid address (or corruption in pool header) | Table | Bugcheck 0xC5 | DRIVER_CORRUPTED_EXPOOL | | A driver has probably corrupted the system pool. | | Parameter | Description | | 1 | Memory referenced | | 2 | IRQL at time of reference | | 3 | 0: Read | | | 1: Write | | 4 | Address that referenced memory | Table | Bugcheck 0xC6 | DRIVER_CAUGHT_MODIFYING_FREED_POOL | | A driver attempted to access a freed memory pool. | | Parameter | Description | | 1 | Memory referenced | | 2 | 0: Read | | | 1: Write | | 3 | 0: Kernel mode | | | 1: User mode | | 4 | 4 | Table | Bugcheck 0xC7 | TIMER_OR_DPC_INVALID | | A kernel timer or delayed procedure call (DPC) object was freed while it was still queued for activation. | | Parameter | Description | | 1 | 0: Timer object | | | 1: DPC object | | | 2: DPC routine | | 2 | Address of object | | 3 | Beginning of memory range checked | | 4 | End of memory range checked | Table | Bugcheck 0xCA | PNP_FATAL_ERROR | | The PnP Manager encountered a severe error, probably as a result of a flawed Plug and Play driver. | | Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Description | | 0x01 | Address of newly reported PDO | Address of older PDO which has been duplicated | Reserved | Duplicate PDO. A specific instance of a driver has enumerated multiple PDOs with identical device and unique IDs. | | 0x02 | Address of purported PDO | Reserved | Reserved | Invalid PDO. An API that requires a PDO has been called with random memory, an FDO, or a PDO which hasn't been initialized. | | 0x03 | Address of purported PDO | Reserved | Reserved | Invalid PDO. An API that requires a PDO has been called with random memory, an FDO, or a PDO that hasn't been initialized. | | 0x04 | Address of PDO with DOE_ DELETE_ PENDING set | Address of ID buffer | 1: DeviceID 2: UniqueID 3: HardwareIDs 4: Compatible IDs | Invalid ID. An enumerator has returned an ID that contains illegal characters or isn't properly terminated. (IDs must contain only characters in the ranges 0x20 to 0x2B and 0x2D to 0x7F.) | | 0x05 | Address of PDO | Reserved | Reserved | PDO freed while linked in devnode tree. The object manager reference count on a PDO dropped to zero while the devnode was still linked in the tree. (This usually indicates that the driver is not adding a reference when returning the PDO in a query IRP.) | Table | Bugcheck 0xCB | DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS | | A driver failed to release locked pages after an I/O operation. | | Parameter | Description | | 1 | Calling address in driver that locked the pages | | 2 | Caller of the calling address in driver that locked the pages | | 3 | Pointer to MDL containing the locked pages | | 4 | Guilty driver's name (pointer to Unicode string) | Table | Bugcheck 0xCC | PAGE_FAULT_IN_FREED_SPECIAL_POOL | | The system has referenced memory that was earlier freed. | | Parameter | Description | | 1 | Memory address referenced | | 2 | 0: Read | | | 1: Write | | 3 | Address that referenced memory (if known) | | 4 | Reserved | Table | Bugcheck 0xCD | PAGE_FAULT_BEYOND_END_OF_ALLOCATION | | The system accessed memory beyond the end of some driver's pool allocation. | | Parameter | Description | | 1 | Memory address referenced | | 2 | 0: Read | | | 1: Write | | 3 | Address that referenced memory (if known) | | 4 | Reserved | Table | Bugcheck 0xCE | DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS | | A driver failed to cancel pending operations before unloading. | | Parameter | Description | | 1 | Memory address referenced | | 2 | 0: Read | | | 1: Write | | 3 | Address that referenced memory (if known) | | 4 | Reserved | Table | Bugcheck 0xCF | TERMINAL_SERVER_DRIVER_MADE_INCORRECT_MEMORY_REFERENCE | | A driver has been incorrectly ported to the terminal server. | | Parameter | Description | | 1 | Memory address referenced | | 2 | 0: Read | | | 1: Write | | 3 | Address that referenced memory (if known) | | 4 | Reserved | Table | Bugcheck 0xD0 | DRIVER_CORRUPTED_MMPOOL | | A driver has corrupted the system pool. | | Parameter | Description | | 1 | Memory referenced | | 2 | IRQL at time of reference | | 3 | 0: Read | | | 1: Write | | 4 | Address that referenced memory | Table | Bugcheck 0xD1 | DRIVER_IRQL_NOT_LESS_OR_EQUAL | | A driver attempted to access pageable memory at a process IRQL that was too high. | | Parameter | Description | | 1 | Memory referenced | | 2 | IRQL at time of reference | | 3 | 0: Read | | | 1: Write | | 4 | Address that referenced memory | Table | Bugcheck 0xD3 | DRIVER_PORTION_MUST_BE_NONPAGED | | A driver has incorrectly marked code or data as pageable. | | Parameter | Description | | 1 | Memory referenced | | 2 | IRQL at time of reference | | 3 | 0: Read | | | 1: Write | | 4 | Address that referenced memory | Table | Bugcheck 0xD4 | SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD | | A driver did not cancel pending operations before unloading. | | Parameter | Description | | 1 | Memory referenced | | 2 | IRQL at time of reference | | 3 | 0: Read | | | 1: Write | | 4 | Address that referenced memory | Table | Bugcheck 0xD5 | DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL | | A driver has referenced memory that was earlier freed. | | Parameter | Description | | 1 | Memory address referenced | | 2 | 0: Read | | | 1: Write | | 3 | Address that referenced memory (if known) | | 4 | Reserved | Table | Bugcheck 0xD6 | DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION | | A driver accessed memory beyond the end of its pool allocation. | | Parameter | Description | | 1 | Memory address referenced | | 2 | 0: Read | | | 1: Write | | 3 | Address that referenced memory (if known) | | 4 | Reserved | Table | Bugcheck 0xD7 | DRIVER_UNMAPPING_INVALID_VIEW | | A driver is trying to unmap an address that was not mapped. | | Parameter | Description | | 1 | Virtual address to unmap | | 2 | 0: system is not terminal server | | | 1: system is terminal server | | 3 | 0 | | 4 | 0 | Table | Bugcheck 0xD8 | DRIVER_USED_EXCESSIVE_PTES | | There are no remaining system page table entries. | | Parameter | Description | | 1 | Pointer to the guilty driver's name (Unicode string), or 0 | | 2 | Number of PTEs used by the guilty driver (if Parameter 1 is nonzero) | | 3 | Total free system PTEs | | 4 | Total system PTEs | Table | Bugcheck 0xDB | DRIVER_CORRUPTED_SYSPTES | | An attempt was made to touch memory at an invalid IRQL, probably due to corruption of system PTEs. | | Parameter | Description | | 1 | Memory referenced | | 2 | IRQL | | 3 | 0: read | | | 1: write | | 4 | Address in code which referenced memory | Table | Bugcheck 0xDC | DRIVER_INVALID_STACK_ACCESS | | A driver accessed a stack address that lies below the stack pointer of the stack's thread. | | Parameter | Description | | 1 4 | Reserved | Table | Bugcheck 0xDE | POOL_CORRUPTION_IN_FILE_AREA | | A driver corrupted pool memory used for holding pages destined for disk. | | Parameter | Description | | 1 4 | Reserved | Table | Bugcheck 0xE1 | WORKER_THREAD_RETURNED_AT_BAD_IRQL | | A worker thread completed and returned at IRQL DISPATCH_LEVEL or above. | | Parameter | Description | | 1 | Address of the worker routine | | 2 | IRQL (should have been 0) | | 3 | Work item parameter | | 4 | Work item address | Table | Bugcheck 0xE2 | MANUALLY_INITIATED_CRASH | | The user deliberately initiated a crash dump from either the kernel debugger or the keyboard. | | Parameter | Description | | 1 4 | Reserved | Table | Bugcheck 0xE3 | RESOURCE_NOT_OWNED | | A thread tried to release a resource it did not own. | | Parameter | Description | | 1 | Address of resource | | 2 | Address of thread | | 3 | Address of owner table (if it exists) | | 4 | Reserved | Table | Bugcheck 0xE4 | WORKER_INVALID | | An Executive worker item was found in memory that must not contain such items. | | Parameter | Description | | 1 | Code position indicator | | 2 | Address of worker item | | 3 | Start of pool block | | 4 | End of pool block | |