Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3171 lines
121 KiB

  1. BugChecks and what to do about them:
  2. Bugchecks with no descriptions are either checked builds
  3. only or very rare. If you get one of these and a kernel
  4. debugger is available do the following
  5. kb
  6. !process 0 7
  7. !vm
  8. !errlog
  9. Note:
  10. Please use following format for modifications in this file, it helps
  11. the debugger to extract the description text from this file:
  12. <BUGCODE> <value>
  13. <text>
  14. PARAMETERS
  15. <ParamId1> - <text>
  16. VALUES: - If parameter values are explained.
  17. <paramId1-value> : <text>
  18. <ParamId2> - <text>
  19. <ParamId3> - <text>
  20. <paramid4> - <text>
  21. <paramId1-value> : <text>
  22. <ParamId2> - <text>
  23. VALUES: - If parameter values are explained.
  24. <paramId2-value> : <text>
  25. END_VALUES
  26. <ParamId3> - <text>
  27. <paramid4> - <text>
  28. DESCRIPTION - if more description text for bugcheck follows
  29. <text>
  30. APC_INDEX_MISMATCH (0x1)
  31. This is a kernel internal error which can occur on a checked build.
  32. The most common reason to see such a bugcheck would occur when a
  33. filesystem had a mismatched number of KeEnterCriticalRegion calls compared
  34. to KeLeaveCriticalRegion calls. This check is made on exit from a system
  35. call.
  36. PARAMETERS
  37. 1 - address of system function (system call)
  38. 2 - Thread->ApcStateIndex << 8 | Previous ApcStateIndex
  39. 3 - Thread->KernelApcDicable
  40. 4 - Previous KernelApcDisable
  41. DEVICE_QUEUE_NOT_BUSY (0x2)
  42. INVALID_AFFINITY_SET (0x3)
  43. INVALID_DATA_ACCESS_TRAP (0x4)
  44. INVALID_PROCESS_ATTACH_ATTEMPT (0x5)
  45. INVALID_PROCESS_DETACH_ATTEMPT (0x6)
  46. INVALID_SOFTWARE_INTERRUPT (0x7)
  47. IRQL_NOT_DISPATCH_LEVEL (0x8)
  48. IRQL_NOT_GREATER_OR_EQUAL (0x9)
  49. IRQL_NOT_LESS_OR_EQUAL (0xA)
  50. PARAMETERS
  51. 1 - memory referenced
  52. 2 - IRQL
  53. 3 - value 0 = read operation, 1 = write operation
  54. 4 - address which referenced memory
  55. DESCRIPTION
  56. An attempt was made to access a pagable (or completely invalid) address at an
  57. interrupt request level (IRQL) that is too high. This is usually
  58. caused by drivers using improper addresses.
  59. If a kernel debugger is available get the stack backtrace.
  60. NO_EXCEPTION_HANDLING_SUPPORT (0xB)
  61. MAXIMUM_WAIT_OBJECTS_EXCEEDED (0xC)
  62. MUTEX_LEVEL_NUMBER_VIOLATION (0xD)
  63. NO_USER_MODE_CONTEXT (0xE)
  64. SPIN_LOCK_ALREADY_OWNED (0xF)
  65. SPIN_LOCK_NOT_OWNED (0x10)
  66. THREAD_NOT_MUTEX_OWNER (0x11)
  67. TRAP_CAUSE_UNKNOWN (0x12)
  68. PARAMETERS
  69. 1 - Unexpected interrupt.
  70. 2 - Unknown floating point exception. Next parameter is enabled and
  71. asserted status bits (see processor definition).
  72. EMPTY_THREAD_REAPER_LIST (0x13)
  73. CREATE_DELETE_LOCK_NOT_LOCKED (0x14)
  74. LAST_CHANCE_CALLED_FROM_KMODE (0x15)
  75. CID_HANDLE_CREATION (0x16)
  76. CID_HANDLE_DELETION (0x17)
  77. REFERENCE_BY_POINTER (0x18)
  78. BAD_POOL_HEADER (0x19)
  79. The pool is already corrupt at the time of the current request.
  80. This may or may not be due to the caller.
  81. The internal pool links must be walked to figure out a possible cause of
  82. the problem, and then special pool applied to the suspect tags or the driver
  83. verifier to a suspect driver.
  84. PARAMETERS
  85. 1 -
  86. VALUES:
  87. 3 : the pool freelist is corrupt.
  88. Parameter 2 - the pool entry being checked, 4/5 are the read back
  89. flink/blink freelist values. The values are supposed to be the
  90. same parameter 2.
  91. 5 : the adjacent pool block headers are corrupt.
  92. Parameter 2 - the entries whose headers are not consistent.
  93. Parameter 3 - the line number inside pool.c (generally not useful).
  94. Parameter 4 - the entries whose headers are not consistent.
  95. MEMORY_MANAGEMENT (0x1A)
  96. PARAMETERS
  97. 1 - The subtype of the bugcheck:
  98. VALUES:
  99. 1 : The fork clone block reference count is corrupt. Only occurs
  100. on checked builds.
  101. DESCRIPTION
  102. # Any other values ( != 1) for parameter 1 must be individually examined.
  103. PFN_SHARE_COUNT (0x1B)
  104. PFN_REFERENCE_COUNT (0x1C)
  105. NO_SPIN_LOCK_AVAILABLE (0x1D)
  106. KMODE_EXCEPTION_NOT_HANDLED (0x1E)
  107. PARAMETERS
  108. 1 - The exception code that was not handled
  109. 2 - The address that the exception occured at
  110. 3 - Parameter 0 of the exception
  111. 4 - Parameter 1 of the exception
  112. DESCRIPTION
  113. This is a very common bugcheck. Usually the exception address pinpoints
  114. the driver/function that caused the problem. Always note this address
  115. as well as the link date of the driver/image that contains this address.
  116. Some common problems are exception code 0x80000003. This means a hard
  117. coded breakpoint or assertion was hit, but this system was booted
  118. /NODEBUG. This is not supposed to happen as developers should never have
  119. hardcoded breakpoints in retail code, but ...
  120. If this happens, make sure a debugger gets connected, and the
  121. system is booted /DEBUG. This will let us see why this breakpoint is
  122. happening.
  123. An exception code of 0x80000002 (STATUS_DATATYPE_MISALIGNMENT) indicates
  124. that an unaligned data reference was encountered. The trap frame will
  125. supply additional information.
  126. SHARED_RESOURCE_CONV_ERROR (0x1F)
  127. KERNEL_APC_PENDING_DURING_EXIT (0x20)
  128. PARAMETERS
  129. 1 - The address of the APC found pending during exit.
  130. 2 - The thread's APC disable count
  131. 3 - The current IRQL
  132. DESCRIPTION
  133. The key data items are the thread's APC disable count.
  134. If this is non-zero, then this is the source of the problem.
  135. A negative value indicates that a filesystem has called
  136. FsRtlEnterFileSystem more than FsRtlExitFileSystem. A positive value
  137. indicates that the reverse is true. If you ever see this, be very very
  138. suspicious of all file systems installed on the machine. Third party
  139. redirectors are especially suspicious since they do not generally
  140. receive the heavy duty testing that NTFS, FAT, RDR, etc receive.
  141. This current IRQL should also be 0. If it is not, that a driver's
  142. cancelation routine can cause this bugcheck by returning at an elevated
  143. IRQL. Always attempt to not what the customer was doing/closing at the
  144. time of the crash, and note all of the installed drivers at the time of
  145. the crash. This symptom is usually a severe bug in a third party
  146. driver.
  147. QUOTA_UNDERFLOW (0x21)
  148. FILE_SYSTEM (0x22)
  149. FAT_FILE_SYSTEM (0x23)
  150. All file system bug checks have encoded in their first ULONG
  151. the source file and the line within the source file that generated
  152. the bugcheck. The high 16-bits contains a number to identify the
  153. file and low 16-bits is the source line within the file where
  154. the bug check call occurs. For example, 0x00020009 indicates
  155. that the FAT file system bugcheck occurred in source file #2 and
  156. line #9.
  157. The file system calls bug check in multiple places and this will
  158. help us identify the actual source line that generated the bug
  159. check.
  160. If you see FatExceptionFilter on the stack then the 2nd and 3rd
  161. parameters are the exception record and context record. Do a .cxr
  162. on the 3rd parameter and then kb to obtain a more informative stack
  163. trace.
  164. NTFS_FILE_SYSTEM (0x24)
  165. All file system bug checks have encoded in their first ULONG
  166. the source file and the line within the source file that generated
  167. the bugcheck. The high 16-bits contains a number to identify the
  168. file and low 16-bits is the source line within the file where
  169. the bug check call occurs. For example, 0x00020009 indicates
  170. that the NTFS file system bugcheck occurred in source file #2 and
  171. line #9.
  172. The file system calls bug check in multiple places and this will
  173. help us identify the actual source line that generated the bug
  174. check.
  175. If you see NtfsExceptionFilter on the stack then the 2nd and 3rd
  176. parameters are the exception record and context record. Do a .cxr
  177. on the 3rd parameter and then kb to obtain a more informative stack
  178. trace.
  179. NPFS_FILE_SYSTEM (0x25)
  180. All file system bug checks have encoded in their first ULONG
  181. the source file and the line within the source file that generated
  182. the bugcheck. The high 16-bits contains a number to identify the
  183. file and low 16-bits is the source line within the file where
  184. the bug check call occurs. For example, 0x00020009 indicates
  185. that the NPFS file system bugcheck occurred in source file #2 and
  186. line #9.
  187. The file system calls bug check in multiple places and this will
  188. help us identify the actual source line that generated the bug
  189. check.
  190. CDFS_FILE_SYSTEM (0x26)
  191. All file system bug checks have encoded in their first ULONG
  192. the source file and the line within the source file that generated
  193. the bugcheck. The high 16-bits contains a number to identify the
  194. file and low 16-bits is the source line within the file where
  195. the bug check call occurs. For example, 0x00020009 indicates
  196. that the CD file system bugcheck occurred in source file #2 and
  197. line #9.
  198. The file system calls bug check in multiple places and this will
  199. help us identify the actual source line that generated the bug
  200. check.
  201. If you see CdExceptionFilter on the stack then the 2nd and 3rd
  202. parameters are the exception record and context record. Do a .cxr
  203. on the 3rd parameter and then kb to obtain a more informative stack
  204. trace.
  205. RDR_FILE_SYSTEM (0x27)
  206. If you see RxExceptionFilter on the stack then the 2nd and 3rd parameters are the
  207. exception record and context record. Do a .cxr on the 3rd parameter and then kb to
  208. obtain a more informative stack trace.
  209. The high 16 bits of the first parameter is the RDBSS bugcheck code, which is defined
  210. as follows:
  211. RDBSS_BUG_CHECK_CACHESUP = 0xca550000,
  212. RDBSS_BUG_CHECK_CLEANUP = 0xc1ee0000,
  213. RDBSS_BUG_CHECK_CLOSE = 0xc10e0000,
  214. RDBSS_BUG_CHECK_NTEXCEPT = 0xbaad0000,
  215. Further the mapping between each of the above RDBSS bugcheck codes and the
  216. corresponding files (all in ...\base\fs\rdr2\rdbss directory) is as follows -
  217. RDBSS_BUG_CHECK_CACHESUP ===> cachesup.c
  218. RDBSS_BUG_CHECK_CLEANUP ====> cleanup.c
  219. RDBSS_BUG_CHECK_CLOSE =======> close.c
  220. RDBSS_BUG_CHECK_NTEXCEPT ====> ntexcept.c
  221. CORRUPT_ACCESS_TOKEN (0x28)
  222. SECURITY_SYSTEM (0x29)
  223. INCONSISTENT_IRP (0x2A)
  224. PARAMETERS
  225. 1 - Address of the IRP that was found to be inconsistent
  226. DESCRIPTION
  227. An IRP was encountered that was in an inconsistent state; i.e., some field
  228. or fields of the IRP were inconsistent w/the remaining state of the IRP.
  229. An example would be an IRP that was being completed, but was still marked
  230. as being queued to a driver's device queue. This bugcheck code is not
  231. currently being used in the system, but exists for debugging purposes.
  232. PANIC_STACK_SWITCH (0x2B)
  233. This error indicates that the kernel mode stack was overrun. This normally
  234. occurs when a kernel-mode driver uses too much stack space. It can also
  235. occur when serious data corruption occurs in the kernel.
  236. PORT_DRIVER_INTERNAL (0x2C)
  237. SCSI_DISK_DRIVER_INTERNAL (0x2D)
  238. DATA_BUS_ERROR (0x2E)
  239. This bugcheck is normally caused by a parity error in the system memory.
  240. PARAMETERS
  241. 1 - Virtual address that caused the fault
  242. 2 - Physical address that caused the fault.
  243. 3 - Processor status register (PSR)
  244. 4 - Faulting instruction register (FIR)
  245. DESCRIPTION
  246. This error can also be caused by a driver accessing a bad virtual
  247. address whose backing physical address does not exist.
  248. INSTRUCTION_BUS_ERROR (0x2F)
  249. SET_OF_INVALID_CONTEXT (0x30)
  250. Attempt to set the stack pointer in the trap frame to a lower value than
  251. the current stack pointer value. This would cause the kernel run with a
  252. stack pointer pointing to stack which is no longer valid.
  253. PARAMETERS
  254. 1 - New stack pointer
  255. 2 - Old stack pointer
  256. 3 - TrapFrame address
  257. 4 - 0
  258. PHASE0_INITIALIZATION_FAILED (0x31)
  259. System init failed early on. A debugger is required to analyze this.
  260. PHASE1_INITIALIZATION_FAILED (0x32)
  261. PARAMETERS
  262. 1 - NT status code that describes why the system initialization failed.
  263. 2 - Indicates location within init.c where phase 1 initialization failure occured
  264. UNEXPECTED_INITIALIZATION_CALL (0x33)
  265. CACHE_MANAGER (0x34)
  266. See the comment for FAT_FILE_SYSTEM (0x23)
  267. NO_MORE_IRP_STACK_LOCATIONS (0x35)
  268. PARAMETERS
  269. 1 - Address of the IRP
  270. DESCRIPTION
  271. A higher level driver has attempted to call a lower level driver through
  272. the IoCallDriver() interface, but there are no more stack locations in the
  273. packet, hence, the lower level driver would not be able to access its
  274. parameters, as there are no parameters for it. This is a disasterous
  275. situation, since the higher level driver "thinks" it has filled in the
  276. parameters for the lower level driver (something it MUST do before it calls
  277. it), but since there is no stack location for the latter driver, the former
  278. has written off of the end of the packet. This means that some other memory
  279. has probably been trashed at this point.
  280. DEVICE_REFERENCE_COUNT_NOT_ZERO (0x36)
  281. PARAMETERS
  282. 1 - Address of the device object
  283. DESCRIPTION
  284. A device driver has attempted to delete one of its device objects from the
  285. system but the reference count for that object was non-zero, meaning that
  286. there are still outstanding references to the device. (The reference count
  287. indicates the number of reasons why this device object cannot be deleted.)
  288. This is a bug in the calling device driver.
  289. FLOPPY_INTERNAL_ERROR (0x37)
  290. SERIAL_DRIVER_INTERNAL (0x38)
  291. SYSTEM_EXIT_OWNED_MUTEX (0x39)
  292. SYSTEM_UNWIND_PREVIOUS_USER (0x3A)
  293. SYSTEM_SERVICE_EXCEPTION (0x3B)
  294. INTERRUPT_UNWIND_ATTEMPTED (0x3C)
  295. INTERRUPT_EXCEPTION_NOT_HANDLED (0x3D)
  296. MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED (0x3E)
  297. The system has multiple processors, but they are asymmetric in relation
  298. to one another. In order to be symmetric all processors must be of
  299. the same type and level. For example, trying to mix a Pentium level
  300. processor with an 80486 would cause this bugcheck.
  301. NO_MORE_SYSTEM_PTES (0x3F)
  302. PARAMETERS
  303. 1 - PTE Type (0 - system expansion, 1 nonpaged pool expansion)
  304. 2 - Requested size
  305. 3 - Total free system PTEs
  306. 4 - Total system PTEs
  307. DESCRIPTION
  308. No System PTEs left. Usually caused by a driver not cleaning up
  309. properly. If kernel debugger available get stack trace and
  310. "!sysptes 3".
  311. Set HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes to a DWORD 1 value and reboot. Then the system will save stack traces
  312. so the guilty driver can be identified. There is no other way to find out
  313. which driver is neglecting to clean up the I/Os. A bugcheck DRIVER_USED_EXCESSIVE_PTES will then occur if the system runs out of PTEs again and the offending
  314. driver's name will be printed.
  315. TARGET_MDL_TOO_SMALL (0x40)
  316. A driver has called the IoBuildPartialMdl() function and passed it an MDL
  317. to map part of a source MDL, but the target MDL is not large enough to map
  318. the entire range of addresses requested. This is a driver bug. The source
  319. and target MDLs, as well as the address range length to be mapped are the
  320. arguments to the IoBuildPartialMdl() function, i.e.;
  321. IoBuildPartialMdl(
  322. IN PMDL SourceMdl,
  323. IN OUT PMDL TargetMdl,
  324. IN PVOID VirtualAddress,
  325. IN ULONG Length
  326. )
  327. MUST_SUCCEED_POOL_EMPTY (0x41)
  328. PARAMETERS
  329. 1 - size of the request that could not be satisfied
  330. 2 - number of pages used of nonpaged pool
  331. 3 - number of > PAGE_SIZE requests from nonpaged pool
  332. 4 - number of pages available
  333. DESCRIPTION
  334. No component should ever ask for must-succeed pool as if there is none left,
  335. the system crashes. Instead, components should ask for normal pool and
  336. gracefully handle the scenario where the pool is temporarily empty. This
  337. bugcheck definitely reveals a bug in the caller (use kb to identify the caller).
  338. In addition, the fact that the pool is empty may be either a transient condition
  339. or possibly a leak in another component (distinguish between the 2 cases by
  340. following the directions below).
  341. Type kb to show the calling stack.
  342. Type !vm 1 to display total pool usage.
  343. Then type !poolused 2 to display per-tag nonpaged pool usage.
  344. Then type !poolused 4 to display per-tag paged pool usage.
  345. The crash should be looked at by the tag owner that is consuming the most pool.
  346. ATDISK_DRIVER_INTERNAL (0x42)
  347. NO_SUCH_PARTITION (0x43)
  348. MULTIPLE_IRP_COMPLETE_REQUESTS (0x44)
  349. PARAMETERS
  350. 1 - Address of the IRP
  351. DESCRIPTION
  352. A driver has requested that an IRP be completed (IoCompleteRequest()), but
  353. the packet has already been completed. This is a tough bug to find because
  354. the easiest case, a driver actually attempted to complete its own packet
  355. twice, is generally not what happened. Rather, two separate drivers each
  356. believe that they own the packet, and each attempts to complete it. The
  357. first actually works, and the second fails. Tracking down which drivers
  358. in the system actually did this is difficult, generally because the trails
  359. of the first driver have been covered by the second. However, the driver
  360. stack for the current request can be found by examining the DeviceObject
  361. fields in each of the stack locations.
  362. INSUFFICIENT_SYSTEM_MAP_REGS (0x45)
  363. DEREF_UNKNOWN_LOGON_SESSION (0x46)
  364. REF_UNKNOWN_LOGON_SESSION (0x47)
  365. CANCEL_STATE_IN_COMPLETED_IRP (0x48)
  366. PARAMETERS
  367. 1 - Pointer to the IRP
  368. DESCRIPTION
  369. This bugcheck indicates that an I/O Request Packet (IRP) that is to be
  370. cancelled, has a cancel routine specified in it -- meaning that the packet
  371. is in a state in which the packet can be cancelled -- however, the packet
  372. no longer belongs to a driver, as it has entered I/O completion. This is
  373. either a driver bug, or more than one driver is accessing the same packet,
  374. which is not likely and much more difficult to find.
  375. PAGE_FAULT_WITH_INTERRUPTS_OFF (0x49)
  376. IRQL_GT_ZERO_AT_SYSTEM_SERVICE (0x4A)
  377. Returning to usermode from a system call at an IRQL > PASSIVE_LEVEL.
  378. PARAMETERS
  379. 1 - Address of system function (system call routine)
  380. 2 - Current IRQL
  381. 3 - 0
  382. 4 - 0
  383. STREAMS_INTERNAL_ERROR (0x4B)
  384. FATAL_UNHANDLED_HARD_ERROR (0x4C)
  385. If a hard error occurs during system booting before windows is up, and
  386. the hard error is a real error, the system will blue screen crash.
  387. Some common cases are:
  388. x218 - This means a necessary registry hive file could not be
  389. loaded. The obvious reason is if it is corrupt or missing.
  390. In this case, either the Emergency Repair Disk or a
  391. reinstall is required.
  392. Some less obvious reasons are that the driver has corrupted
  393. the registry data while loading into memory, or the memory
  394. where the registry file was loaded is not actually memory.
  395. x21a - This means that either winlogon, or csrss (windows) died
  396. unexpectedly. The exit code tells more information. Usually
  397. it is c0000005 meaning that an unhandled exception crashed
  398. either of these processes.
  399. x221 - This means that a driver is corrupt, or a system DLL was
  400. detected to be corrupt. We do our best to integrity check
  401. drivers and important system DLLs, and if they are corrupt,
  402. the blue screen displays the name of the corrupt file.
  403. This prevents crashes from occuring when we stumble into the
  404. corruption later. Safeboot or boot an alternate OS (or reinstall)
  405. and then make sure the on disk file that is listed as bad
  406. matches the version on CD and replace if necessary. In some
  407. cases, random corruption can mean that there is a hardware
  408. problem in the I/O path to the file.
  409. NO_PAGES_AVAILABLE (0x4D)
  410. PARAMETERS
  411. 1 - Total number of dirty pages
  412. 2 - Number of dirty pages destined for the pagefile(s).
  413. 3 - Nonpaged pool available at time of bugcheck (in pages).
  414. 4 - Number of transition pages that are currently stranded.
  415. DESCRIPTION
  416. No free pages available to continue operations.
  417. If kernel debugger available "!vm 3".
  418. This bugcheck can occur for the following reasons:
  419. 1. A driver has blocked, deadlocking the modified or mapped
  420. page writers. Examples of this include mutex deadlocks or
  421. accesses to paged out memory in filesystem drivers, filter
  422. drivers, etc. This indicates a driver bug.
  423. If parameter 1 or 2 is large, then this is a possibility. Type
  424. "!process 8 7" in the kernel debugger.
  425. 2. The storage driver(s) are not processing requests. Examples
  426. of this are stranded queues, non-responding drives, etc. This
  427. indicates a driver bug.
  428. If parameter 1 or 2 is large, then this is a possibility. Type
  429. "!process 8 7" in the kernel debugger.
  430. 3. Not enough pool is available for the storage stack to write out
  431. modified pages. This indicates a driver bug.
  432. If parameter 3 is small, then this is a possibility. Type
  433. "!vm" and "!poolused 2" in the kernel debugger.
  434. 4. A high priority realtime thread has starved the balance set
  435. manager from trimming pages and/or starved the modified writer
  436. from writing them out. This indicates a bug in the component
  437. that created this thread.
  438. This one is hard to determine, try "!ready"
  439. 5. All the processes have been trimmed to their minimums and all
  440. modified pages written, but still no memory is available. The
  441. freed memory must be stuck in transition pages with non-zero
  442. reference counts - thus they cannot be put on the freelist.
  443. A driver is neglecting to unlock the pages preventing the
  444. reference counts from going to zero which would free the pages.
  445. This may be due to transfers that never finish and the driver
  446. never aborts or other driver bugs.
  447. If parameter 4 is large, then this is a possibility. But it
  448. is very hard to find the driver. Try "!process 0 1" and look
  449. for any that have a lot of locked pages.
  450. If the problem cannot be found, then try booting with /DEBUG and a kernel
  451. debugger attached, so if it reproduces, a debug session can be initiated
  452. to identify the cause.
  453. PFN_LIST_CORRUPT (0x4E)
  454. PARAMETERS
  455. 1 -
  456. VALUES:
  457. 1: value 1
  458. 2 - ListHead value which was corrupt
  459. 3 - number of pages available
  460. 4 - 0
  461. 2: value 2
  462. 2 - entry in list being removed
  463. 3 - highest physical page number
  464. 4 - reference count of entry being removed
  465. DESCRIPTION
  466. Typically caused by drivers passing bad memory descriptor lists (ie: calling MmUnlockPages twice with the same list, etc). If a kernel debugger is available get the stack trace.
  467. NDIS_INTERNAL_ERROR (0x4F)
  468. PAGE_FAULT_IN_NONPAGED_AREA (0x50)
  469. PARAMETERS
  470. 1 - memory referenced.
  471. 2 - value 0 = read operation, 1 = write operation.
  472. 3 - If non-zero, the instruction address which referenced the bad memory
  473. address.
  474. 4 - Mm internal code.
  475. DESCRIPTION
  476. Invalid system memory was referenced. This cannot be protected by try-except, it
  477. must be protected by a Probe. Typically the address is just plain bad or it is pointing at freed memory.
  478. REGISTRY_ERROR (0x51)
  479. PARAMETERS
  480. 1 - value 1 (indicates where we bugchecked)
  481. 2 - value 2 (indicates where we bugchecked)
  482. 3 - depends on where it bugchecked, may be pointer to hive
  483. 4 - depends on where it bugchecked, may be return code of
  484. HvCheckHive if the hive is corrupt.
  485. DESCRIPTION
  486. Something has gone badly wrong with the registry. If a kernel debugger
  487. is available, get a stack trace.It can also indicate that the registry got
  488. an I/O error while trying to read one of its files, so it can be caused by
  489. hardware problems or filesystem corruption.
  490. It may occur due to a failure in a refresh operation, which is used only
  491. in by the security system, and then only when resource limits are encountered.
  492. MAILSLOT_FILE_SYSTEM (0x52)
  493. NO_BOOT_DEVICE (0x53)
  494. LM_SERVER_INTERNAL_ERROR (0x54)
  495. DATA_COHERENCY_EXCEPTION (0x55)
  496. INSTRUCTION_COHERENCY_EXCEPTION (0x56)
  497. XNS_INTERNAL_ERROR (0x57)
  498. FTDISK_INTERNAL_ERROR (0x58)
  499. The system was booted from a revived primary partition so
  500. the hives say the mirror is ok, when in fact it is not.
  501. The "real" image of the hives are on the shadow.
  502. The user must boot from the shadow.
  503. PINBALL_FILE_SYSTEM (0x59)
  504. See the comment for FAT_FILE_SYSTEM (0x23)
  505. CRITICAL_SERVICE_FAILED (0x5A)
  506. SET_ENV_VAR_FAILED (0x5B)
  507. HAL_INITIALIZATION_FAILED (0x5C)
  508. UNSUPPORTED_PROCESSOR (0x5D)
  509. 386 - System failed because the processor is only a 386 or
  510. compatible. The system requires a Pentium (or higher) compatible processor.
  511. OBJECT_INITIALIZATION_FAILED (0x5E)
  512. SECURITY_INITIALIZATION_FAILED (0x5F)
  513. PROCESS_INITIALIZATION_FAILED (0x60)
  514. HAL1_INITIALIZATION_FAILED (0x61)
  515. OBJECT1_INITIALIZATION_FAILED (0x62)
  516. SECURITY1_INITIALIZATION_FAILED (0x63)
  517. SYMBOLIC_INITIALIZATION_FAILED (0x64)
  518. MEMORY1_INITIALIZATION_FAILED (0x65)
  519. CACHE_INITIALIZATION_FAILED (0x66)
  520. CONFIG_INITIALIZATION_FAILED (0x67)
  521. PARAMETERS
  522. 1 - indicates location in ntos\config\cmsysini that failed
  523. 2 - location selector
  524. 3 - NT status code
  525. DESCRIPTION
  526. This means the registry couldn't allocate the pool needed to contain the
  527. registry files. This should never happen, since it is early enough in
  528. system initialization that there is always plenty of paged pool available.
  529. FILE_INITIALIZATION_FAILED (0x68)
  530. IO1_INITIALIZATION_FAILED (0x69)
  531. Initialization of the I/O system failed for some reason. There is
  532. very little information available. In general, setup really made
  533. some bad decisions about the installation of the system, or the user has
  534. reconfigured the system.
  535. LPC_INITIALIZATION_FAILED (0x6A)
  536. PROCESS1_INITIALIZATION_FAILED (0x6B)
  537. PARAMETERS
  538. 1 - Indicates the NT status code that caused the failure.
  539. 2 - Indicates the location in psinit.c where the failure
  540. was detected.
  541. REFMON_INITIALIZATION_FAILED (0x6C)
  542. SESSION1_INITIALIZATION_FAILED (0x6D)
  543. 1 - Indicates the NT status code that caused the failure.
  544. DESCRIPTION
  545. The bugcheck code (SESSION1 - SESSION5) indicates the location in
  546. ntos\init\init.c where the failure was detected.
  547. SESSION2_INITIALIZATION_FAILED (0x6E)
  548. PARAMETERS
  549. 1 - Indicates the NT status code that tripped us into thinking
  550. that initialization failed.
  551. DESCRIPTION
  552. The bugcheck code (SESSION1 - SESSION5) indicates the location in
  553. ntos\init\init.c where the failure was detected.
  554. SESSION3_INITIALIZATION_FAILED (0x6F)
  555. PARAMETERS
  556. 1 - Indicates the NT status code that tripped us into thinking
  557. that initialization failed.
  558. DESCRIPTION
  559. The bugcheck code (SESSION1 - SESSION5) indicates the location in
  560. ntos\init\init.c where the failure was detected.
  561. SESSION4_INITIALIZATION_FAILED (0x70)
  562. PARAMETERS
  563. 1 - Indicates the NT status code that tripped us into thinking
  564. that initialization failed.
  565. The bugcheck code (SESSION1 - SESSION5) indicates the location in
  566. ntos\init\init.c where the failure was detected.
  567. SESSION5_INITIALIZATION_FAILED (0x71)
  568. PARAMETERS
  569. 1 - Indicates the NT status code that tripped us into thinking
  570. that initialization failed.
  571. DESCRIPTION
  572. The bugcheck code (SESSION1 - SESSION5) indicates the location in
  573. ntos\init\init.c where the failure was detected.
  574. ASSIGN_DRIVE_LETTERS_FAILED (0x72)
  575. CONFIG_LIST_FAILED (0x73)
  576. Indicates that one of the core system hives cannot be linked in the
  577. registry tree. The hive is valid, it was loaded OK. Examine the 2nd
  578. bugcheck argument to see why the hive could not be linked in the
  579. registry tree.
  580. PARAMETERS
  581. 1 - 1
  582. 2 - Indicates the NT status code that tripped us into thinking
  583. that we failed to load the hive.
  584. 3 - Index of hive in hivelist
  585. 4 - Pointer to UNICODE_STRING containing filename of hive
  586. DESCRIPTION
  587. This can be either SAM, SECURITY, SOFTWARE or DEFAULT. One common reason
  588. for this to happen is if you are out of disk space on the system drive
  589. (in which case param 4 is 0xC000017D - STATUS_NO_LOG_SPACE) or an attempt
  590. to allocate pool has failed (in which case param 4 is 0xC000009A -
  591. STATUS_INSUFFICIENT_RESOURCES). Other status codes must be individually
  592. investigated.
  593. BAD_SYSTEM_CONFIG_INFO (0x74)
  594. Can indicate that the SYSTEM hive loaded by the osloader/NTLDR
  595. was corrupt. This is unlikely, since the osloader will check
  596. a hive to make sure it isn't corrupt after loading it.
  597. It can also indicate that some critical registry keys and values
  598. are not present. (i.e. somebody used regedt32 to delete something
  599. that they shouldn't have) Booting from LastKnownGood may fix
  600. the problem, but if someone is persistent enough in mucking with
  601. the registry they will need to reinstall or use the Emergency
  602. Repair Disk.
  603. PARAMETERS
  604. 1 - identifies the function
  605. 2 - identifies the line inside the function
  606. 3 - other info
  607. 4 - usually the NT status code.
  608. CANNOT_WRITE_CONFIGURATION (0x75)
  609. This will result if the SYSTEM hive file cannot be converted to a
  610. mapped file. This usually happens if the system is out of pool and
  611. we cannot reopen the hive.
  612. PARAMETERS
  613. 1 - 1
  614. 2 - Indicates the NT status code that tripped us into thinking
  615. that we failed to convert the hive.
  616. DESCRIPTION
  617. Normally you shouldn't see this as the conversion happens at early
  618. during system initialization, so enough pool should be available.
  619. PROCESS_HAS_LOCKED_PAGES (0x76)
  620. PARAMETERS
  621. 1 - 0
  622. 2 - process address
  623. 3 - number of locked pages
  624. 4 - pointer to driver stacks (if enabled) or 0 if not.
  625. DESCRIPTION
  626. Caused by a driver not cleaning up completely after an I/O. Set
  627. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackLockedPages to a DWORD 1 value and reboot. Then the system will save stack traces
  628. so the guilty driver can be identified. There is no other way to find out
  629. which driver is neglecting to clean up the I/Os. When you enable this flag,
  630. if the driver commits the error again you will see a different
  631. bugcheck - DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS - which can identify the
  632. offending driver(s).
  633. KERNEL_STACK_INPAGE_ERROR (0x77)
  634. PARAMETERS
  635. 1 - status code
  636. 2 - i/o status code
  637. 3 - page file number
  638. 4 - offset into page file
  639. 1 - status code
  640. VALUES:
  641. 0 : (page was retrieved from page cache)
  642. 2 - value found in stack where signature should be
  643. 3 - 0
  644. 4 - address of signature on kernel stack
  645. 1 : (page was retrieved from disk)
  646. 2 - value found in stack where signature should be
  647. 3 - 0
  648. 4 - address of signature on kernel stack
  649. 2 : (page was retrieved from disk, storage stack returned SUCCESS,
  650. but the Status.Information != PAGE_SIZE)
  651. 2 - value found in stack where signature should be
  652. 3 - 0
  653. 4 - address of signature on kernel stack
  654. DESCRIPTION
  655. The requested page of kernel data could not be read in. Caused by
  656. bad block in paging file or disk controller error.
  657. In the case when the first and second arguments are 0, the stack signature
  658. in the kernel stack was not found. Again, bad hardware.
  659. An I/O status of c000009c (STATUS_DEVICE_DATA_ERROR) or
  660. C000016AL (STATUS_DISK_OPERATION_FAILED) normally indicates
  661. the data could not be read from the disk due to a bad
  662. block. Upon reboot autocheck willl run and attempt to map out the bad
  663. sector. If the status is C0000185 (STATUS_IO_DEVICE_ERROR) and the paging
  664. file is on a SCSI disk device, then the cabling and termination should be
  665. checked. See the knowledge base article on SCSI termination.
  666. PHASE0_EXCEPTION (0x78)
  667. MISMATCHED_HAL (0x79)
  668. PARAMETERS
  669. 1 - type of mismatch
  670. VALUES:
  671. 1:
  672. The PRCB release levels mismatch. (something is out of date)
  673. 2 - Major PRCB level of ntoskrnl.exe
  674. 3 - Major PRCB level of hal.dll
  675. 2:
  676. The build types mismatch.
  677. 2 - Build type of ntoskrnl.exe
  678. 3 - Build type of hal.dll
  679. Build type
  680. 0 = Free multiprocessor enabled build
  681. 1 = Checked multiprocessor enabled build
  682. 2 = Free uniprocessor build
  683. DESCRIPTION
  684. The HAL revision level and HAL configuration type does not match that
  685. of the kernel or the machine type. This would probably happen if the
  686. user has manually updated either ntoskrnl.exe or hal.dll and managed to
  687. get a conflict.
  688. You have an MP (multi-processor) Hal and a UP (uni-processor) Kernel,
  689. or the reverse.
  690. KERNEL_DATA_INPAGE_ERROR (0x7A)
  691. PARAMETERS
  692. 1 - lock type that was held (value 1,2,3, or PTE address)
  693. 2 - error status (normally i/o status code)
  694. 3 - current process (virtual address for lock type 3, or PTE)
  695. 4 - virtual address that could not be in-paged
  696. DESCRIPTION
  697. The requested page of kernel data could not be read in. Typically caused by
  698. a bad block in the paging file or disk controller error. Also see
  699. KERNEL_STACK_INPAGE_ERROR.
  700. If the error status is 0xC000000E, 0xC000009C, 0xC000009D or 0xC0000185,
  701. it means the disk subsystem has experienced a failure.
  702. ntmsd is the best alias to take care of these types of failures.
  703. If the error status is 0xC000009A, then it means the request failed because
  704. a filesystem failed to make forward progress. The filesystem alias is the
  705. right alias to look at these types of failures.
  706. INACCESSIBLE_BOOT_DEVICE (0x7B)
  707. PARAMETERS
  708. 1 - Pointer to the device object or Unicode string of ARC name
  709. DESCRIPTION
  710. During the initialization of the I/O system, it is possible that the driver
  711. for the boot device failed to initialize the device that the system is
  712. attempting to boot from, or it is possible for the file system that is
  713. supposed to read that device to either fail its initialization or to simply
  714. not recognize the data on the boot device as a file system structure that
  715. it recognizes. In the former case, the argument (#1) is the address of a
  716. Unicode string data structure that is the ARC name of the device from which
  717. the boot was being attempted. In the latter case, the argument (#1) is the
  718. address of the device object that could not be mounted.
  719. If this is the initial setup of the system, then this error can occur if
  720. the system was installed on an unsupported disk or SCSI controller. Note
  721. that some controllers are supported only by drivers which are in the Windows
  722. Driver Library (WDL) which requires the user to do a custom install. See
  723. the Windows Driver Library for more information.
  724. This error can also be caused by the installation of a new SCSI adapter or
  725. disk controller or repartitioning the disk with the system partition. If
  726. this is the case, on x86 systems the boot.ini file must be edited or on ARC
  727. systems setup must be run. See the "Advanced Server System Administrator's
  728. User Guide" for information on changing boot.ini.
  729. If the argument is a pointer to an ARC name string, then the format of the
  730. first two (and in this case only) longwords will be:
  731. USHORT Length;
  732. USHORT MaximumLength;
  733. PVOID Buffer;
  734. That is, the first longword will contain something like 00800020 where 20
  735. is the actual length of the Unicode string, and the next longword will
  736. contain the address of buffer. This address will be in system space, so
  737. the high order bit will be set.
  738. If the argument is a pointer to a device object, then the format of the first
  739. word will be:
  740. USHORT Type;
  741. That is, the first word will contain a 0003, where the Type code will ALWAYS
  742. be 0003.
  743. Note that this makes it immediately obvious whether the argument is a pointer
  744. to an ARC name string or a device object, since a Unicode string can never
  745. have an odd number of bytes, and a device object will always have a Type
  746. code of 3.
  747. BUGCODE_PSS_MESSAGE (0x7C)
  748. INSTALL_MORE_MEMORY (0x7D)
  749. PARAMETERS
  750. 1 - Number of physical pages found
  751. 2 - Lowest physical page
  752. 3 - Highest physical page
  753. 4 - 0
  754. DESCRIPTION
  755. Not enough memory to boot Windows.
  756. SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (0x7E)
  757. PARAMETERS
  758. 1 - The exception code that was not handled
  759. 2 - The address that the exception occured at
  760. 3 - Exception Record Address
  761. 4 - Context Record Address
  762. DESCRIPTION
  763. This is a very common bugcheck. Usually the exception address pinpoints
  764. the driver/function that caused the problem. Always note this address
  765. as well as the link date of the driver/image that contains this address.
  766. Some common problems are exception code 0x80000003. This means a hard
  767. coded breakpoint or assertion was hit, but this system was booted
  768. /NODEBUG. This is not supposed to happen as developers should never have
  769. hardcoded breakpoints in retail code, but ...
  770. If this happens, make sure a debugger gets connected, and the
  771. system is booted /DEBUG. This will let us see why this breakpoint is
  772. happening.
  773. An exception code of 0x80000002 (STATUS_DATATYPE_MISALIGNMENT) indicates
  774. that an unaligned data reference was encountered. The trap frame will
  775. supply additional information.
  776. UNEXPECTED_KERNEL_MODE_TRAP (0x7F)
  777. This means a trap occured in kernel mode, and it's a trap of a kind
  778. that the kernel isn't allowed to have/catch (bound trap) or that
  779. is always instant death (double fault). The first number in the
  780. bugcheck parens is the number of the trap (8 = double fault, etc)
  781. Consult an Intel x86 family manual to learn more about what these
  782. traps are. Here is a *portion* of those codes:
  783. PARAMETERS
  784. 1 - x86 trap number
  785. VALUES:
  786. 0: EXCEPTION_DIVIDED_BY_ZERO
  787. 1: EXCEPTION_DEBUG
  788. 2: EXCEPTION_NMI
  789. 3: EXCEPTION_INT3
  790. 5: EXCEPTION_BOUND_CHECK
  791. 6: EXCEPTION_INVALID_OPCODE
  792. 7: EXCEPTION_NPX_NOT_AVAILABLE
  793. 8: EXCEPTION_DOUBLE_FAULT
  794. 9: EXCEPTION_NPX_OVERRUN
  795. A: EXCEPTION_INVALID_TSS
  796. B: EXCEPTION_SEGMENT_NOT_PRESENT
  797. C: EXCEPTION_STACK_FAULT
  798. D: EXCEPTION_GP_FAULT
  799. F: EXCEPTION_RESERVED_TRAP
  800. 10: EXCEPTION_NPX_ERROR
  801. 11: EXCEPTION_ALIGNMENT_CHECK
  802. DESCRIPTION
  803. If kv shows a taskGate
  804. use .tss on the part before the colon, then kv.
  805. Else if kv shows a trapframe
  806. use .trap on that value
  807. Else
  808. !trap on the appropriate frame (which will be the ebp that
  809. goes with a procedure named KiTrap...) (at least on x86) will
  810. show where the trap was taken.
  811. Endif
  812. kb will then show the corrected stack.
  813. NMI_HARDWARE_FAILURE (0x80)
  814. This is typically due to a hardware malfunction, the hardware vendor should be called.
  815. SPIN_LOCK_INIT_FAILURE (0x81)
  816. DFS_FILE_SYSTEM (0x82)
  817. SETUP_FAILURE (0x85)
  818. (NOTE: Textmode setup no longer uses bugchecks to bail out of serious
  819. error conditions. Therefore, you will never encounter a bugcheck 0x85.
  820. All bugchecks have been replaced with friendlier and (where possible)
  821. more descriptive error messages. Some of the former bugchecks, however,
  822. have simply been replaced by our own bugcheck screen, and the codes for
  823. these error conditions are the same as before. These are documented below.)
  824. The first extended bugcheck field is a code indicating what the
  825. problem is, and the other fields are used differently depending on
  826. that value.
  827. PARAMETERS
  828. 1 -
  829. VALUES:
  830. 0: The oem hal font is not a valid .fon format file, and so setup
  831. is unable to display text.
  832. This indicates that vgaxxx.fon on the boot floppy or CD-ROM
  833. is damaged.
  834. 1: Video initialization failed. NO LONGER A BUGCHECK CODE.
  835. This error now has its own error screen, and the user is only
  836. presented with the two relevant parameters detailed below.
  837. This may indicate that the disk containing vga.sys
  838. (or other video driver appropriate to the machine)
  839. is damaged or that machine has video hardware that
  840. we cannot communicate with.
  841. 3 - Status code from NT API call, if appropriate.
  842. 2 - What failed:
  843. VALUES:
  844. 0 : NtCreateFile of \device\video0
  845. 1 : IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES
  846. 2 : IOCTL_VIDEO_QUERY_AVAIL_MODES
  847. 3: Desired video mode not supported. This is indicative of
  848. an internal setup error.
  849. 4: IOCTL_VIDEO_SET_CURRENT_MODE (unable to set video mode)
  850. 5: IOCTL_VIDEO_MAP_VIDEO_MEMORY
  851. 6: IOCTL_VIDEO_LOAD_AND_SET_FONT
  852. END_VALUES
  853. 2: Out of memory. NO LONGER A BUGCHECK CODE.
  854. This error now uses a more friendly error screen that works regardless
  855. of how far along in setup we are.
  856. 3: Keyboard initialization failed. NO LONGER A BUGCHECK CODE.
  857. There are now 2 error screens for the two different possible errors
  858. we can get here.
  859. This may indicate that the disk containing the keyboard driver
  860. (i8042prt.sys or kbdclass.sys) is damaged or that machine has
  861. keyboard hardware we cannot communicate with.
  862. It may also mean that the keyboard layout dll could not be loaded.
  863. 2 - What failed:
  864. VALUES:
  865. 0: NtCreateFile of \device\KeyboardClass0 failed.
  866. "Setup did not find a keyboard connected to your computer."
  867. 1: Unable to load keyboard layout dll.
  868. "Setup could not load the keyboard layout file <filename>."
  869. Indicates that the cd or floppy is missing a file (kbdus.dll
  870. for us release, other layout dlls for localized ones).
  871. END_VALUES
  872. 4: Setup was unable to resolve the ARC device pathname of
  873. the device from which setup was started. This is an internal
  874. Setup error.
  875. 5: Partitioning sanity check failed. This indicates a bug in
  876. a disk driver. The parameters are meaningful only to the setup
  877. group.
  878. MBR_CHECKSUM_MISMATCH (0x8B)
  879. This message occurs during the boot process when the MBR checksum the system
  880. calculates does not match the checksum passed in by the loader. This is usually
  881. an indication of a virus. There are many forms of viruses and not all can be
  882. detected. The newer ones usually can only be detected by a virus scanner that
  883. has recently been upgraded. Boot a write-protected disk containing a virus
  884. scanner and attempt to clean out the infection.
  885. PARAMETERS
  886. 1 - Disk Signature from MBR.
  887. 2 - MBR checksum calculated by osloader.
  888. 3 - MBR checksum calculated by system.
  889. KERNEL_MODE_EXCEPTION_NOT_HANDLED (0x8E)
  890. PARAMETERS
  891. 1 - The exception code that was not handled
  892. 2 - The address that the exception occured at
  893. 3 - Trap Frame
  894. DESCRIPTION
  895. This is a very common bugcheck. Usually the exception address pinpoints
  896. the driver/function that caused the problem. Always note this address
  897. as well as the link date of the driver/image that contains this address.
  898. Some common problems are exception code 0x80000003. This means a hard
  899. coded breakpoint or assertion was hit, but this system was booted
  900. /NODEBUG. This is not supposed to happen as developers should never have
  901. hardcoded breakpoints in retail code, but ...
  902. If this happens, make sure a debugger gets connected, and the
  903. system is booted /DEBUG. This will let us see why this breakpoint is
  904. happening.
  905. An exception code of 0x80000002 (STATUS_DATATYPE_MISALIGNMENT) indicates
  906. that an unaligned data reference was encountered. The trap frame will
  907. supply additional information.
  908. PP0_INITIALIZATION_FAILED (0x8F)
  909. This message occurs if phase 0 initialization of the kernel-mode Plug and
  910. Play Manager failed.
  911. PP1_INITIALIZATION_FAILED (0x90)
  912. This message occurs if phase 1 initialization of the kernel-mode Plug and
  913. Play Manager failed. This is where most of the initialization is done,
  914. including setting up the environment (registry, etc.) for drivers to
  915. subsequently call during I/O init.
  916. UP_DRIVER_ON_MP_SYSTEM (0x92)
  917. This message occurs if a UNIPROCESSOR only driver is loaded on a MultiProcessor
  918. system with more than one active processor.
  919. PARAMETERS
  920. 1 - The Base address of the driver.
  921. INVALID_KERNEL_HANDLE (0x93)
  922. This message occurs if kernel code (server, redirector, other driver, etc.) attempts
  923. to close a handle that is not a valid handle.
  924. PARAMETERS
  925. 1 - The handle that NtClose was called with.
  926. 2 -
  927. VALUES
  928. 0 : means a protected handle was closed.
  929. 1 : means an invalid handle was closed.
  930. KERNEL_STACK_LOCKED_AT_EXIT (0x94)
  931. This message occurs when a thread exits while its kernel stack is
  932. marked as not swapable
  933. INVALID_WORK_QUEUE_ITEM (0x96)
  934. This message occurs when KeRemoveQueue removes a queue entry whose flink
  935. or blink field is null. This is almost always called by code misusing
  936. worker thread work items, but any queue misuse can caus this. The rule
  937. is that an entry on a queue may only be inserted on the list once. When an
  938. item is removed from a queue, it's flink field is set to NULL. This bugcheck
  939. occurs when remove queue attempts to remove an entry, but the flink or blink field
  940. is NULL. In order to debug this problem, you need to know the queue being referenced.
  941. If the queue is one of the EX worker queues (ExWorkerQueue), then the item being
  942. removed is a WORK_QUEUE_ITEM (see ex.h). This bugcheck assumes that this is the case.
  943. The bugcheck ex parameters are designed to help identify the driver misusing the queue
  944. item.
  945. PARAMETERS
  946. 1 - The address of the queue entry whose flink/blink field is NULL
  947. 2 - The address of the queue being references. Usually this is one
  948. of the ExWorkerQueues.
  949. 3 - The base address of the ExWorkerQueue array. This will help determine if
  950. the queue in question is an ExWorkerQueue and if so, the offset from this
  951. parameter will isolate the queue.
  952. 4 - If this is an ExWorkerQueue (which it usually is), this is the address of the
  953. worker routine that would have been called if the work item was valid. This
  954. can be used to isolate the driver that is misusing the work queue.
  955. BOUND_IMAGE_UNSUPPORTED (0x97)
  956. END_OF_NT_EVALUATION_PERIOD (0x98)
  957. Your Windows System is an evaluation unit with an expiration date. The trial period is over.
  958. PARAMETERS
  959. 1 - The low order 32 bits of your installation date
  960. 2 - The high order 32 bits of your installation date
  961. 3 - The trial period in minutes
  962. INVALID_REGION_OR_SEGMENT (0x99)
  963. ExInitializeRegion or ExInterlockedExtendRegion was called with an invalid
  964. set of parameters.
  965. SYSTEM_LICENSE_VIOLATION (x9a)
  966. A violation of the software license agreement has occurred. This can be due to either
  967. attempting to change the product type of an offline system, or an attempt to change
  968. the trial period of an evaluation unit of Windows.
  969. PARAMETERS
  970. 1 - Violation type
  971. VALUES:
  972. 0 : means that offline product type changes were attempted
  973. 2 - if 1, product should be LanmanNT or ServerNT. If 0, should be WinNT
  974. 3 - partial serial number
  975. 4 - first two characters of product type from product options.
  976. 1 : means that offline changes to the nt evaluation unit time period
  977. 2 - registered evaluation time from source 1
  978. 3 - partial serial number
  979. 4 - registered evaluation time from alternate source
  980. 2 : means that the setup key could not be opened
  981. 2 - status code associated with the open failure
  982. 3 : The SetupType value from the setup key is missing so gui setup
  983. mode could not be detected
  984. 2 - status code associated with the key lookup failure
  985. 4 : The SystemPrefix value from the setup key is missing
  986. 2 - status code associated with the key lookup failure
  987. 4 : The SystemPrefix value from the setup key is missing
  988. 5 : means that offline changes were made to the number of licensed processors
  989. 2 - see setup code
  990. 3 - invalid value found in licensed processors
  991. 4 - officially licensed number of processors
  992. 6 : means that ProductOptions key could not be opened
  993. 2 - status code associated with the open failure
  994. 7 : means that ProductType value could not be read
  995. 2 - status code associated with the read failure
  996. 8 : means that Change Notify on ProductOptions failed
  997. 2 - status code associated with the change notify failure
  998. 9 : means that Change Notify on SystemPrefix failed
  999. 2 - status code associated with the change notify failure
  1000. 10 : Looks like an NTW system was converted to an NTS system
  1001. 11 : Reference of setup key failed
  1002. 2 - status code associated with the change failure
  1003. 12 : Reference of product options key failed
  1004. 2 - status code associated with the change failure
  1005. 13 : Open of ProductOptions in worker thread failed
  1006. 2 - status code associated with the failure
  1007. 16 : Failure occured in the setup key worker thread
  1008. 2 - status code associated with the failure
  1009. 3 - 0 means set value failed, 1 means change notify failed
  1010. 17 : Failure occured in the product options key worker thread
  1011. 2 - status code associated with the failure
  1012. 3 - 0 means set value failed, 1 means change notify failed
  1013. 18 : Could not open the LicenseInfoSuites key for the suite
  1014. 2 - status code associated with the failure
  1015. 19 : Could not query the LicenseInfoSuites key for the suite
  1016. 2 - status code associated with the failure
  1017. 20 : Could not allocate memory
  1018. 2 - size of memory alllocation
  1019. 21 : Could not re-set the ConcurrentLimit value for the suite key
  1020. 2 - status code associated with the failure
  1021. 22 : Could not open the license key for a suite product
  1022. 2 - status code associated with the failure
  1023. 23 : Could not re-set the ConcurrentLimit value for a suite product
  1024. 2 - status code associated with the failure
  1025. 24 : Could not start the change notify for the LicenseInfoSuites
  1026. 2 - status code associated with the open failure
  1027. 25 : A suite is running on a system that must be pdc
  1028. 26 : Failure occurred when enumerating the suites
  1029. 2 - status code associated with the failure
  1030. UDFS_FILE_SYSTEM (0x9B)
  1031. All file system bug checks have encoded in their first ULONG
  1032. the source file and the line within the source file that generated
  1033. the bugcheck. The high 16-bits contains a number to identify the
  1034. file and low 16-bits is the source line within the file where
  1035. the bug check call occurs. For example, 0x00020009 indicates
  1036. that the UDF file system bugcheck occurred in source file #2 and
  1037. line #9.
  1038. The file system calls bug check in multiple places and this will
  1039. help us identify the actual source line that generated the bug
  1040. check.
  1041. If you see UdfExceptionFilter on the stack then the 2nd and 3rd
  1042. parameters are the exception record and context record. Do a .cxr
  1043. on the 3rd parameter and then kb to obtain a more helpful stack
  1044. trace.
  1045. MACHINE_CHECK_EXCEPTION (0x9C)
  1046. A fatal Machine Check Exception has occurred.
  1047. KeBugCheckEx parameters;
  1048. x86 Processors
  1049. If the processor has ONLY MCE feature available (For example Intel Pentium),
  1050. the parameters are:
  1051. 1 - Low 32 bits of P5_MC_TYPE MSR
  1052. 2 -
  1053. 3 - High 32 bits of P5_MC_ADDR MSR
  1054. 4 - Low 32 bits of P5_MC_ADDR MSR
  1055. If the processor also has MCA feature available (For example Intel
  1056. Pentium Pro), the parameters are:
  1057. 1 - Bank number
  1058. 2 - Address field of MCi_ADDR MSR for the MCA bank that had the error
  1059. 3 - High 32 bits of MCi_STATUS MSR for the MCA bank that had the error
  1060. 4 - Low 32 bits of MCi_STATUS MSR for the MCA bank that had the error
  1061. DRIVER_POWER_STATE_FAILURE (0x9F)
  1062. A driver is causing an inconsistent power state.
  1063. PARAMETERS
  1064. 1 - SubCode
  1065. VALUES:
  1066. 1 : The device object is being freed which still has an
  1067. outstanding power request which it has not completed
  1068. 2 : The device object completed the irp for the system power
  1069. state request, but failed to call PoStartNextPowerIrp
  1070. END_VALUES
  1071. 2 - Optional Target
  1072. 3 - DeviceObject
  1073. 4 - DriverObject
  1074. INTERNAL_POWER_ERROR (0xA0)
  1075. The power policy manager experienced a fatal error.
  1076. PARAMETERS:
  1077. 1 -
  1078. VALUES:
  1079. 1 : Error Handling power IRP.
  1080. 2 : Unhandled exception. To debug this, dump the stack. Look
  1081. for the function ntoskrnl!PopExceptionFilter. The first
  1082. argument to this function is of type PEXCEPTION_POINTERS.
  1083. In the debugger, type 'dt nt!_EXCEPTION_POINTERS <argument>'.
  1084. Then type '.cxr <value of context record from the previous command>'.
  1085. All subsequent debugger commands will show you the actual
  1086. source of the error. Start with a stack trace by typing 'kb'.
  1087. 3 : Failed to write processor context record to hibernation file.
  1088. 4 : Failed to write I/O context to hibernation file.
  1089. 5 : Failed to write checksum to hibernation file.
  1090. PCI_BUS_DRIVER_INTERNAL (0xA1)
  1091. The PCI Bus driver detected inconsistency
  1092. problems in its internal structures and could not continue.
  1093. MEMORY_IMAGE_CORRUPT (0xA2)
  1094. On a system wake operation, various regions of memory may be CRCed to
  1095. guard against memory failures.
  1096. PARAMETERS
  1097. 1 -
  1098. VALUES:
  1099. 2 : Table page check failure
  1100. 2 - the page number with the failing page run index
  1101. 3 - non-zero, the index which failed to match the run
  1102. VALUES:
  1103. 0 :
  1104. 2 - the page number in of the table page which failed
  1105. END_VALUES
  1106. 3 : The checksum for the range of memory listed is incorrect
  1107. 2 - starting physical page # of the range
  1108. 3 - length (in pages) of the range
  1109. 4 - the page number of the table page containing this run
  1110. ACPI_DRIVER_INTERNAL (0xA3)
  1111. The ACPI Driver detected an internal inconsistency. The inconsistency is
  1112. so severe that continuing to run would cause serious problems.
  1113. The ACPI driver calls this when the state is so inconsistent that proceeding
  1114. would actually be dangerous. The problem may or may not be a BIOS issue, but
  1115. we cannot actually tell.
  1116. To find the place where the driver died, look at the 2nd parameter. The high
  1117. word corresponds to an entry in wdm\acpi\driver\nt\debug.h. The low word
  1118. corresponds to a line number.
  1119. CNSS_FILE_SYSTEM_FILTER (0xA4)
  1120. See the comment for FAT_FILE_SYSTEM (0x23)
  1121. ACPI_BIOS_ERROR (0xA5)
  1122. The ACPI Bios in the system is not fully compliant with the ACPI specification.
  1123. The first value indicates where the incompatibility lies:
  1124. Plug & Play and Power Management related incompatibilities:
  1125. 0x1 --- ACPI_ROOT_RESOURCES_FAILURE
  1126. ACPI cannot find the SCI Interrupt vector in the resources handed
  1127. to it when ACPI is started.
  1128. Argument 0 - ACPI's deviceExtension
  1129. Argument 1 - ACPI's ResourceList
  1130. Argument 2 - 0 <- Means no resource list found
  1131. Argument 2 - 1 <- Means no IRQ resource found in list
  1132. 0x2 --- ACPI_ROOT_PCI_RESOURCE_FAILURE
  1133. ACPI could not process the resource list for the PCI root buses
  1134. There is an White Paper on the Web Site about this problem
  1135. Argument 0 - The ACPI Extension for the PCI bus
  1136. Argument 1 - 0
  1137. Argument 2 - Pointer to the QUERY_RESOURCES irp
  1138. Argument 1 - 1
  1139. Argument 2 - Pointer to the QUERY_RESOURCE_REQUIREMENTS irp
  1140. Argument 1 - 2
  1141. Argument 2 - 0 <- Indicates that we found an empty resource list
  1142. Argument 1 - 3 <- Could not find the current bus number in the CRS
  1143. Argument 2 - Pointer to the PNP CRS descriptor
  1144. Argument 1 - Pointer to the Resource List for PCI
  1145. Argument 2 - Pointer to the E820 Memory Table
  1146. 0x3 --- ACPI_FAILED_MUST_SUCCEED_METHOD
  1147. ACPI tried to run a control method while creating device extensions
  1148. to represent the ACPI namespace, but this control method failed
  1149. Argument 0 - The ACPI Object that was being run
  1150. Argument 1 - return value from the interpreter
  1151. Argument 2 - Name of the control method (in ULONG format)
  1152. 0x4 --- ACPI_PRW_PACKAGE_EXPECTED_INTEGER
  1153. ACPI evaluated a _PRW and expected to find an integer as a
  1154. package element
  1155. Argument 0 - The ACPI Extension for which the _PRW belongs to
  1156. Argument 1 - Pointer to the method
  1157. Argument 2 - The DataType returned (see amli.h)
  1158. 0x5 --- ACPI_PRW_PACKAGE_TOO_SMALL
  1159. ACPI evaluated a _PRW and the package that came back failed to
  1160. contain at least 2 elements. The ACPI specification requires that
  1161. two elements to always be present in a _PRW.
  1162. Argument 0 - The ACPI Extension for which the _PRW belongs to
  1163. Argument 1 - Pointer to the _PRW
  1164. Argument 2 - Number of elements in the _PRW
  1165. 0x6 --- ACPI_PRx_CANNOT_FIND_OBJECT
  1166. ACPI tried to find a named object named, but could not find it.
  1167. Argument 0 - The ACPI Extension for which the _PRx belongs to
  1168. Argument 1 - Pointer to the _PRx
  1169. Argument 2 - Pointer to the name of the object to look for
  1170. 0x7 --- ACPI_EXPECTED_BUFFER
  1171. ACPI evaluated a method and expected to receive a Buffer in return.
  1172. However, the method returned some other data type
  1173. Argument 0 - The ACPI Extension for which the method belongs to
  1174. Argument 1 - Pointer to the method
  1175. Argument 2 - The DataType returned (see amli.h)
  1176. 0x8 --- ACPI_EXPECTED_INTEGER
  1177. ACPI evaluated a method and expected to receive an Integer in return.
  1178. However, the method returned some other data type
  1179. Argument 0 - The ACPI Extension for which the method belongs to
  1180. Argument 1 - Pointer to the method
  1181. Argument 2 - The DataType returned (see amli.h)
  1182. 0x9 --- ACPI_EXPECTED_PACKAGE
  1183. ACPI evaluated a method and expected to receive a Package in return.
  1184. However, the method returned some other data type
  1185. Argument 0 - The ACPI Extension for which the method belongs to
  1186. Argument 1 - Pointer to the method
  1187. Argument 2 - The DataType returned (see amli.h)
  1188. 0xA --- ACPI_EXPECTED_STRING
  1189. ACPI evaluated a method and expected to receive a String in return.
  1190. However, the method returned some other data type
  1191. Argument 0 - The ACPI Extension for which the method belongs to
  1192. Argument 1 - Pointer to the method
  1193. Argument 2 - The DataType returned (see amli.h)
  1194. 0xB --- ACPI_EJD_CANNOT_FIND_OBJECT
  1195. ACPI cannot find the object referenced to by an _EJD string
  1196. Argument 0 - The ACPI Extension for which which the _EJD belongs to
  1197. Argument 1 - The status returned by the interpreter
  1198. Argument 2 - Name of the object we are trying to find
  1199. 0xC --- ACPI_CLAIMS_BOGUS_DOCK_SUPPORT
  1200. ACPI provides faulty/insufficient information for dock support
  1201. Argument 0 - The ACPI Extension for which ACPI found a dock device
  1202. Argument 1 - Pointer to the _EJD method
  1203. Argument 2 - 0 <- Bios does not claim system is dockage
  1204. 1 <- Duplicate device extensions for dock device
  1205. 0xD --- ACPI_REQUIRED_METHOD_NOT_PRESENT
  1206. ACPI could not find a required method/object in the namespace
  1207. This is the bugcheck that is used if a vendor does not have an
  1208. _HID or _ADR present
  1209. Argument 0 - The ACPI Extension that we need the object for
  1210. Argument 1 - The (ULONG) name of the method we looked for
  1211. Argument 2 - 0 <- Base Case
  1212. Argument 2 - 1 <- Conflict
  1213. 0xE --- ACPI_POWER_NODE_REQUIRED_METHOD_NOT_PRESENT
  1214. ACPI could not find a requird method/object in the namespace for
  1215. a power resource (or entity other than a "device"). This is the
  1216. bugcheck used if a vendor does not have an _ON, _OFF, or _STA present
  1217. for a power resource
  1218. Argument 0 - The NS PowerResource that we need the object for
  1219. Argument 1 - The (ULONG) name of the method we looked for
  1220. Argument 2 - 0 <- Base Case
  1221. 0xF --- ACPI_PNP_RESOURCE_LIST_BUFFER_TOO_SMALL
  1222. ACPI could not parse the resource descriptor
  1223. Argument 0 - The current buffer that ACPI was parsing
  1224. Argument 1 - The buffer's tag
  1225. Argument 2 - The specified length of the buffer
  1226. 0x10 --- ACPI_CANNOT_MAP_SYSTEM_TO_DEVICE_STATES
  1227. ACPI could not map determine the system to device state mapping
  1228. correctly. There is a very long white paper about this topic
  1229. Argument 0 - The ACPI Extension for which are trying to do the mapping
  1230. Argument 1 - 0 The _PRx mapped back to a non-supported S-state
  1231. Argument 2 - The DEVICE_POWER_STATE (ie: x+1)
  1232. Argument 1 - 1 We cannot find a D-state to associate with the S-state
  1233. Argument 2 - The SYSTEM_POWER_STATE that is causing us grief
  1234. Argument 1 - 2 The device claims to support wake from this s-state but
  1235. the s-state is not supported by the system
  1236. Argument 2 - The SYSTEM_POWER_STATE that is causing us grief
  1237. 0x11 --- ACPI_SYSTEM_CANNOT_START_ACPI
  1238. The system could not enter ACPI mode
  1239. Argument 0 - 0 <- System could not initialize AML interpreter
  1240. Argument 0 - 1 <- System could not find RSDT
  1241. Argument 0 - 2 <- System could not allocate critical driver structures
  1242. Argument 0 - 3 <- System could not load RSDT
  1243. Argument 0 - 4 <- System could not load DDBs
  1244. Argument 0 - 5 <- System cannot connect Interrupt vector
  1245. Argument 0 - 6 <- SCI_EN never becomes set in PM1 Control Register
  1246. Argument 0 - 7 <- Table checksum is incorrect
  1247. Argument 1 - Pointer to the table that had a bad checksum
  1248. Argument 2 - Creator Revision
  1249. Argument 0 - 8 <- Failed to load DDB
  1250. Argument 1 - Pointer to the table that we failed to load
  1251. Argument 2 - Creator Revision
  1252. Argument 0 - 9 <- Unsupported Firmware Version
  1253. Argument 1 - FADT Version
  1254. Argument 0 - 10 <- System could not find MADT
  1255. Argument 0 - 11 <- System could not find any valid Local SAPIC structures in the MADT
  1256. Interrupt Routing Failures/Incompatibilities:
  1257. A _PRT is the ACPI BIOS object that specifies how all the
  1258. PCI devices are connected to the interrupt controllers. PRT
  1259. stands for PCI Routing Table. A machine with multiple PCI
  1260. busses may have multiple _PRTs. A _PRT can be displayed using the
  1261. command !acpikd.nsobj <address of _PRT object>
  1262. 0x2001 --- ACPI_FAILED_PIC_METHOD
  1263. ACPI tried to evaluate the PIC control method and but failed
  1264. Argument 0 - InterruptModel (Integer)
  1265. Argument 1 - return value from interpreter
  1266. Argument 2 - Pointer to the PIC control method
  1267. 0x10001 --- ACPI_CANNOT_ROUTE_INTERRUPTS
  1268. ACPI tried to do interrupt routing, but failed
  1269. Argument 0 - Pointer to the device object
  1270. Argument 1 - Pointer to the parent of the device object
  1271. Argument 2 - Pointer to the PRT
  1272. 0x10002 --- ACPI_PRT_CANNOT_FIND_LINK_NODE
  1273. ACPI could not find the link node referenced in a _PRT
  1274. Argument 0 - Pointer to the device object
  1275. Argument 1 - Pointer to the string name we are looking for, but
  1276. could not find.
  1277. Argument 2 - Pointer to the PRT.
  1278. Dump this with !acpikd.nsobj <argument 2>
  1279. 0x10003 --- ACPI_PRT_CANNOT_FIND_DEVICE_ENTRY
  1280. ACPI could not find a mapping in the _PRT package for a device
  1281. Argument 0 - Pointer to the device object
  1282. Argument 1 - The Device ID / Function Number. This DWORD is encoded
  1283. as follows: Bits 5:0 are the PCI Device Number,
  1284. Bits 8:6 are the PCI function number.
  1285. Argument 2 - Pointer to the PRT.
  1286. Dump this with !acpikd.nsobj <argument 2>
  1287. 0x10005 --- ACPI_PRT_HAS_INVALID_FUNCTION_NUMBERS
  1288. ACPI found an entry in the _PRT for which the function ID isn't
  1289. all F's. The Win98 behaviour is to bugcheck if it see this condition,
  1290. so we do so all well. The generic format for a _PRT entry is such
  1291. that the device number is specified, but the function number isn't.
  1292. If it isn't done this way, then the machine vendor can introduce
  1293. dangerous ambiguities
  1294. Argument 0 - Pointer to the PRT object.
  1295. Dump this with !acpikd.nsobj <argument 2>
  1296. Argument 1 - Pointer to the current PRT Element. This is an index into
  1297. the PRT.
  1298. Argument 2 - The DeviceID/FunctionID of the element. This DWORD is
  1299. encoded. Bits 15:0 are the PCI Function Number.
  1300. Bits 31:16 are the PCI Device Number.
  1301. 0x10006 --- ACPI_LINK_NODE_CANNOT_BE_DISABLED
  1302. ACPI found a link node, but cannot disable it. Link nodes must
  1303. be disable to allow for reprogramming
  1304. Argument 0 - Pointer to the link node. This device is missing the
  1305. _DIS method.
  1306. 0x10007 ---
  1307. The _PRT contained a reference to a vector not described in the
  1308. I/O APIC entries MAPIC table.
  1309. Argument 0 - The vector that couldn't be found
  1310. Other Failures/Incompatibilities:
  1311. 0x20000 ---
  1312. The PM_TMR_BLK entry in the Fixed ACPI Description Table doesn't point
  1313. to a working ACPI timer block.
  1314. Argument 0 - The I/O port in the Fixed Table
  1315. BAD_EXHANDLE (0xA7)
  1316. The kernel mode handle table detected an inconsistent handle table
  1317. entry state.
  1318. SESSION_HAS_VALID_POOL_ON_EXIT (0xAB)
  1319. PARAMETERS
  1320. 1 - session ID
  1321. 2 - number of paged pool bytes that are leaking
  1322. 3 - number of nonpaged pool bytes that are leaking
  1323. 4 - total number of paged and nonpaged allocations that are leaking.
  1324. nonpaged allocations are in the upper half of this word,
  1325. paged allocations are in the lower half of this word.
  1326. DESCRIPTION
  1327. Caused by a session driver not freeing its pool allocations prior to a
  1328. session unload. This typically indicates a bug in win32k.sys, atmfd.dll,
  1329. rdpdd.dll or a video driver.
  1330. HAL_MEMORY_ALLOCATION (0xAC)
  1331. The HAL was unable to obtain memory for a system critical requirement.
  1332. These allocations are made early in system initialization and such a
  1333. failure is not expected. It probably indicates some other critical error
  1334. such as pool corruption or massive consumption.
  1335. PARAMETERS
  1336. 1 - Allocation size.
  1337. 2 - 0
  1338. 3 - Pointer to string containing file name.
  1339. 4 - Line number of call to KeBugCheckEx.
  1340. VIDEO_DRIVER_INIT_FAILURE (0xB4)
  1341. The system was not able to go into graphics mode because no display drivers
  1342. were able to start. This usually occurs if no video miniport drivers load
  1343. successfully.
  1344. ATTEMPTED_SWITCH_FROM_DPC (0xB8)
  1345. A wait operation, attach process, or yield was attempted from a DPC routine.
  1346. This is an illegal operation and the stack track will lead to the offending
  1347. code and original DPC routine.
  1348. CHIPSET_DETECTED_ERROR (0xB9)
  1349. SESSION_HAS_VALID_VIEWS_ON_EXIT (0xBA)
  1350. PARAMETERS
  1351. 1 - session ID
  1352. 2 - number of mapped views that are leaking
  1353. 3 - address of this session's mapped views table
  1354. 4 - size of this session's mapped views table.
  1355. DESCRIPTION
  1356. Caused by a session driver not unmapping its mapped views prior to a
  1357. session unload. This typically indicates a bug in win32k.sys, atmfd.dll,
  1358. rdpdd.dll or a video driver.
  1359. NETWORK_BOOT_INITIALIZATION_FAILED (0xBB)
  1360. PARAMETERS
  1361. 1 - the part of network initialization that failed
  1362. 2 - the failure status
  1363. DESCRIPTION
  1364. Caused if we are booting off the network, and a critical function fails during
  1365. IO initialization. Currently the codes for the first value are:
  1366. 1 - updating the registry.
  1367. 2 - starting the network stack - send IOCTLs to the redirector and datagram
  1368. receiver, then wait for the redirector to be ready. If it is not ready
  1369. within a certain period of time, we fail.
  1370. 3 - failed sending the DHCP IOCTL to TCP - this is how we inform the
  1371. transport of its IP adress.
  1372. NETWORK_BOOT_DUPLICATE_ADDRESS (0xBC)
  1373. PARAMETERS
  1374. 1 - the IP address, show as a hex DWORD. So an address aa.bb.cc.dd will
  1375. appear as 0xddccbbaa.
  1376. 2 - the hardware address of the other machine.
  1377. 3 - the hardware address of the other machine.
  1378. 4 - the hardware address of the other machine. For Ethernet, a MAC address
  1379. of aa-bb-cc-dd-ee-ff will be indicated by the second parameter containing
  1380. 0xaabbccdd, the third parameter containing 0xeeff0000, and the fourth
  1381. parameter containing 0x00000000.
  1382. DESCRIPTION
  1383. This indicates that when TCP/IP sent out an ARP for its IP address, it got
  1384. a response from another machine, indicating a duplicate IP address. When we
  1385. are booting off the network this is a fatal error.
  1386. INVALID_HIBERNATED_STATE (0xBD)
  1387. The hibernated memory image does not match the current hardware configuration.
  1388. This bugcheck occurs when a system resumes from hibernate and discovers that the
  1389. hardware has been changed while the system was hibernated.
  1390. PARAMETERS
  1391. 1 - hardware that was invalid
  1392. VALUES:
  1393. 1 : Number of installed processors is less than before the hibernation
  1394. 2 - number of processors before hibernation
  1395. 3 - number of processors after hibernation
  1396. ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE)
  1397. An attempt was made to write to readonly memory. The guilty driver is on the stack trace (and is typically the current instruction pointer).
  1398. PARAMETERS
  1399. 1 - Virtual address for the attempted write.
  1400. 2 - PTE contents.
  1401. 3 - Unique internal Mm information.
  1402. 4 - Unique internal Mm code.
  1403. DESCRIPTION
  1404. When possible, the guilty driver's name (Unicode string) is printed on
  1405. the bugcheck screen and saved in KiBugCheckDriver.
  1406. MUTEX_ALREADY_OWNED (0xBF)
  1407. This thread is attempting to acquire ownership of a mutex it already owns.
  1408. PARAMETERS
  1409. 1 - Address of Mutex
  1410. 2 - Thread
  1411. 3 - 0
  1412. 4 - Unique value to help development isolate the instance.
  1413. SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION (0xC1)
  1414. Special pool has detected memory corruption. Typically the current thread's stack bactrace will reveal the guilty party.
  1415. PARAMETERS
  1416. 4 - subclass of driver violation.
  1417. VALUES:
  1418. 0x30 : caller is trying to allocate pool from an incorrect IRQL level
  1419. 1 - current IRQL
  1420. 2 - pool type
  1421. 3 - number of bytes
  1422. 0x20 : caller is trying to free pool which is not allocated
  1423. 1 - address trying to free
  1424. 2 - Mm internal code
  1425. 3 - 0.
  1426. 0x31 : caller is trying to free pool from an incorrect IRQL level
  1427. 1 - current IRQL
  1428. 2 - pool type
  1429. 3 - address trying to free
  1430. 0x21 : caller is trying to free a bad address
  1431. 1 - address trying to free
  1432. 2 - bytes requested
  1433. 3 - bytes calculated
  1434. 0x22 : caller is trying to free a bad address
  1435. 1 - address trying to free
  1436. 2 - bytes requested
  1437. 3 - bytes calculated
  1438. 0x23 : caller is freeing an address where nearby bytes within the same page have been corrupted
  1439. 1 - address trying to free
  1440. 2 - address where bits are corrupted
  1441. 3 - unique internal Mm pattern
  1442. 0x24 : caller is freeing an address where bytes after the end of the allocation have been overwritten
  1443. 1 - address trying to free
  1444. 2 - address where bits are corrupted
  1445. 3 - unique internal Mm pattern
  1446. BAD_POOL_CALLER (0xC2)
  1447. The current thread is making a bad pool request. Typically this is at a bad IRQL level or double freeing the same allocation, etc.
  1448. PARAMETERS
  1449. 1 - type of pool violation the caller is guilty of.
  1450. VALUES:
  1451. 0x0 : The caller is requesting a zero byte pool allocation.
  1452. Parameter 2 - zero.
  1453. Parameter 3 - the pool type being allocated.
  1454. Parameter 4 - the pool tag being used.
  1455. 0x1 : Pool header has been corrupted
  1456. Parameter 2 - Pointer to pool header
  1457. Parameter 3 - First part of pool header contents
  1458. Parameter 4 - 0
  1459. 0x2 : Pool header has been corrupted
  1460. Parameter 2 - Pointer to pool header
  1461. Parameter 3 - First part of pool header contents
  1462. Parameter 4 - 0
  1463. 0x4 : Pool header has been corrupted
  1464. Parameter 2 - Pointer to pool header
  1465. Parameter 3 - First part of pool header contents
  1466. Parameter 4 - 0
  1467. 0x6 : Attempt to free pool which was already freed
  1468. Parameter 2 - Reserved (__LINE__)
  1469. Parameter 3 - Pointer to pool header
  1470. Parameter 4 - Pool header contents
  1471. 0x7 : Attempt to free pool which was already freed
  1472. Parameter 2 - Reserved (__LINE__)
  1473. Parameter 3 - Pointer to pool header
  1474. Parameter 4 - 0
  1475. 0x8 : Attempt to allocate pool at invalid IRQL
  1476. Parameter 2 - Current IRQL
  1477. Parameter 3 - Pool type
  1478. Parameter 4 - Size of allocation
  1479. 0x9 : Attempt to free pool at invalid IRQL
  1480. Parameter 2 - Current IRQL
  1481. Parameter 3 - Pool type
  1482. Parameter 4 - Address of pool
  1483. 0x40 : Attempt to free usermode address to kernel pool
  1484. Parameter 2 - Starting address
  1485. Parameter 3 - Start of system address space
  1486. Parameter 4 - 0
  1487. 0x41 : Attempt to free a non-allocated nonpaged pool address
  1488. Parameter 2 - Starting address
  1489. Parameter 3 - physical page frame
  1490. Parameter 4 - highest physical page frame
  1491. 0x42 : Attempt to free a virtual address which was never in any pool
  1492. Parameter 2 - Address being freed.
  1493. Parameter 3 - 0
  1494. Parameter 4 - 0
  1495. 0x43 : Attempt to free a virtual address which was never in any pool
  1496. Parameter 2 - Address being freed.
  1497. Parameter 3 - 0
  1498. Parameter 4 - 0
  1499. 0x50 : Attempt to free a non-allocated paged pool address
  1500. Parameter 2 - Starting address
  1501. Parameter 3 - Start offset in pages from beginning of paged pool
  1502. Parameter 4 - Size in bytes of paged pool
  1503. 0x99 : Attempt to free pool with invalid address (or corruption in pool header)
  1504. Parameter 2 - Address being freed
  1505. Parameter 3 - 0
  1506. Parameter 4 - 0
  1507. 0x9A : Attempt to allocate must-succeed pool (this pool type has been deprecated)
  1508. Parameter 2 - Pool type
  1509. Parameter 3 - Size of allocation in bytes
  1510. Parameter 4 - Allocation's pool tag
  1511. DRIVER_VERIFIER_DETECTED_VIOLATION (0xC4)
  1512. A device driver attempting to corrupt the system has been caught. This is
  1513. because the driver was specified in the registry as being suspect (by the
  1514. administrator) and the kernel has enabled substantial checking of this driver.
  1515. If the driver attempts to corrupt the system, bugchecks 0xC4, 0xC1 and 0xA will
  1516. be among the most commonly seen crashes.
  1517. PARAMETERS
  1518. 1 - subclass of driver violation.
  1519. VALUES
  1520. 0x00 : caller is trying to allocate zero bytes
  1521. 2 - current IRQL
  1522. 3 - pool type
  1523. 4 - number of bytes
  1524. 0x01 : caller is trying to allocate paged pool at DISPATCH_LEVEL or above
  1525. 2 - current IRQL
  1526. 3 - pool type
  1527. 4 - number of bytes
  1528. 0x02 : caller is trying to allocate nonpaged pool at an IRQL above DISPATCH_LEVEL
  1529. 2 - current IRQL
  1530. 3 - pool type
  1531. 4 - number of bytes
  1532. 0x03 : caller is trying to allocate more than one page of mustsucceed pool, but one page is the maximum allowed by this API.
  1533. 0x10 : caller is freeing a bad pool address
  1534. 2 - bad pool address
  1535. 0x11 : caller is trying to free paged pool at DISPATCH_LEVEL or above
  1536. 2 - current IRQL
  1537. 3 - pool type
  1538. 4 - pool address
  1539. 0x12 : caller is trying to free nonpaged pool at an IRQL above DISPATCH_LEVEL
  1540. 2 - current IRQL
  1541. 3 - pool type
  1542. 4 - pool address
  1543. 0x13 : the pool the caller is trying to free is already free.
  1544. 2 - line number
  1545. 3 - pool header
  1546. 4 - pool header contents
  1547. 0x14 : the pool the caller is trying to free is already free.
  1548. 2 - line number
  1549. 3 - pool header
  1550. 4 - pool header contents
  1551. 0x15 : the pool the caller is trying to free contains an active timer.
  1552. 2 - timer entry
  1553. 3 - pool type
  1554. 4 - pool address being freed
  1555. 0x16 : the pool the caller is trying to free is a bad address.
  1556. 2 - line number
  1557. 3 - pool address
  1558. 4 - 0
  1559. 0x17 : the pool the caller is trying to free contains an active ERESOURCE.
  1560. 2 - resource entry
  1561. 3 - pool type
  1562. 4 - pool address being freed
  1563. 0x30 : raising IRQL to an invalid level,
  1564. 2 - current IRQL,
  1565. 3 - new IRQL
  1566. 0x31 : lowering IRQL to an invalid level,
  1567. 2 - current IRQL,
  1568. 3 - new IRQL
  1569. 0x32 : releasing a spinlock when not at DISPATCH_LEVEL.
  1570. 2 - current IRQL,
  1571. 3 - spinlock address
  1572. 0x33 : acquiring a fast mutex when not at APC_LEVEL or below.
  1573. 2 - current IRQL,
  1574. 3 - fast mutex address
  1575. 0x34 : releasing a fast mutex when not at APC_LEVEL.
  1576. 2 - current IRQL,
  1577. 3 - thread APC disable count, 4 == fast mutex address
  1578. 0x35 : kernel is releasing a spinlock when not at DISPATCH_LEVEL.
  1579. 2 - current IRQL,
  1580. 3 - spinlock address, 4 == old irql.
  1581. 0x36 : kernel is releasing a queued spinlock when not at DISPATCH_LEVEL.
  1582. 2 - current IRQL,
  1583. 3 - spinlock number,
  1584. 4 - old irql.
  1585. 0x37 : a resource is being acquired but APCs are not disabled.
  1586. 2 - current IRQL,
  1587. 3 - thread APC disable count,
  1588. 4 - resource.
  1589. 0x38 : a resource is being released but APCs are not disabled.
  1590. 2 - current IRQL,
  1591. 3 - thread APC disable count,
  1592. 4 - resource.
  1593. 0x39 : a mutex is being acquired unsafe, but irql is not APC_LEVEL on entry.
  1594. 2 - current IRQL,
  1595. 3 - thread APC disable count,
  1596. 4 - mutex.
  1597. 0x3A : a mutex is being released unsafe, but irql is not APC_LEVEL on entry.
  1598. 2 - current IRQL,
  1599. 3 - thread APC disable count,
  1600. 4 - mutex.
  1601. 0x3B : KeWaitXxx routine is being called at DISPATCH_LEVEL or higher.
  1602. 2 - current irql,
  1603. 3 - object to wait on,
  1604. 4 - time out parameter.
  1605. 0x3C : ObReferenceObjectByHandle is being called with a bad handle.
  1606. 2 - bad handle passed in,
  1607. 3 - object type,
  1608. 4 - 0.
  1609. 0x40 : acquiring a spinlock when not at DISPATCH_LEVEL.
  1610. 2 - current IRQL,
  1611. 3 - spinlock address
  1612. 0x41 : releasing a spinlock when not at DISPATCH_LEVEL.
  1613. 2 - current IRQL,
  1614. 3 - spinlock address
  1615. 0x42 : acquiring a spinlock when caller is already above DISPATCH_LEVEL.
  1616. 2 - current IRQL,
  1617. 3 - spinlock address
  1618. 0x51 : freeing memory where the caller has written past the end of the allocation overwriting our stored bytecount.
  1619. 2 - base address of the allocation,
  1620. 3 - corrupt address,
  1621. 4 - charged bytes.
  1622. 0x52 : freeing memory where the caller has written past the end of the allocation overwriting our stored virtual address.
  1623. 2 - base address of the allocation,
  1624. 3 - hash entry,
  1625. 4 - charged bytes.
  1626. 0x53 : freeing memory where the caller has written past the end of the allocation overwriting our stored virtual address.
  1627. 2 - base address of the allocation,
  1628. 3 - header,
  1629. 4 - internal verifier pointer.
  1630. 0x54 : freeing memory where the caller has written past the end of the allocation overwriting our stored virtual address.
  1631. 2 - base address of the allocation,
  1632. 3 - pool hash size,
  1633. 4 - listindex.
  1634. 0x59 : freeing memory where the caller has written past the end of the allocation overwriting our stored virtual address.
  1635. 2 - base address of the allocation,
  1636. 3 - listindex,
  1637. 4 - internal verifier pointer.
  1638. 0x60 : A driver has forgotten to free its pool allocations prior to unloading.
  1639. 2 - paged bytes, 3 = nonpaged bytes,
  1640. 4 - total # of (paged+nonpaged) allocations that weren't freed.
  1641. In the kernel debugger for a 32-bit target machine, type:
  1642. kd> dc ViBadDriver l1; dc @$p+4 l1; du @$p
  1643. This gives you the name of the driver.
  1644. Then type !verifier 3 drivername.sys for info on the allocations
  1645. that were leaked that caused the bugcheck.
  1646. Assign the bug to the driver owner found above.
  1647. 0x61 : A driver is unloading and allocating memory (in another thread) at the same time.
  1648. 2 - paged bytes, 3 = nonpaged bytes,
  1649. 4 - total # of (paged+nonpaged) allocations that weren't freed.
  1650. In the kernel debugger for a 32-bit target machine, type:
  1651. kd> dc ViBadDriver l1; dc @$p+4 l1; du @$p
  1652. This gives you the name of the driver.
  1653. Then type !verifier 3 drivername.sys for info on the allocations
  1654. that were leaked that caused the bugcheck.
  1655. Assign the bug to the driver owner found above.
  1656. 0x6F : MmProbeAndLockPages called on pages not in PFN database. This
  1657. is typically a driver calling this routine to lock its own
  1658. private dualport RAM. Not only is this not needed, it can also
  1659. corrupt memory on machines with noncontiguous physical RAM.
  1660. 2 - MDL address
  1661. 3 - physical page being locked
  1662. 4 - highest physical page in the system
  1663. 0x70 : MmProbeAndLockPages called when not at DISPATCH_LEVEL or below.
  1664. 2 - current IRQL
  1665. 3 - MDL address
  1666. 4 - access mode
  1667. 0x71 : MmProbeAndLockProcessPages called when not at DISPATCH_LEVEL or below.
  1668. 2 - current IRQL
  1669. 3 - MDL address
  1670. 4 - process address
  1671. 0x72 : MmProbeAndLockSelectedPages called when not at DISPATCH_LEVEL or below.
  1672. 2 - current IRQL
  1673. 3 - MDL address
  1674. 4 - process address
  1675. 0x73 : MmMapIoSpace called when not at DISPATCH_LEVEL or below.
  1676. 2 - current IRQL
  1677. 3 - low 32 bits of the physical address (full 64 on Win64)
  1678. 4 - number of bytes
  1679. 0x74 : MmMapLockedPages called when not at DISPATCH_LEVEL or below.
  1680. 2 - current IRQL
  1681. 3 - MDL address
  1682. 4 - access mode
  1683. 0x75 : MmMapLockedPages called when not at APC_LEVEL or below.
  1684. 2 - current IRQL
  1685. 3 - MDL address
  1686. 4 - access mode
  1687. 0x76 : MmMapLockedPagesSpecifyCache called when not at DISPATCH_LEVEL or below.
  1688. 2 - current IRQL
  1689. 3 - MDL address
  1690. 4 - access mode
  1691. 0x77 : MmMapLockedPagesSpecifyCache called when not at APC_LEVEL or below.
  1692. 2 - current IRQL
  1693. 3 - MDL address
  1694. 4 - access mode
  1695. 0x78 : MmUnlockPages called when not at DISPATCH_LEVEL or below.
  1696. 2 - current IRQL
  1697. 3 - MDL address
  1698. 4 - 0
  1699. 0x79 : MmUnmapLockedPages called when not at DISPATCH_LEVEL or below.
  1700. 2 - current IRQL
  1701. 3 - virtual address being unmapped
  1702. 4 - MDL address
  1703. 0x7A : MmUnmapLockedPages called when not at APC_LEVEL or below.
  1704. 2 - current IRQL
  1705. 3 - virtual address being unmapped
  1706. 4 - MDL address
  1707. 0x7B : MmUnmapIoSpace called when not at APC_LEVEL or below.
  1708. 2 - current IRQL
  1709. 3 - virtual address being unmapped
  1710. 4 - number of bytes
  1711. 0x7C : MmUnlockPages called with an MDL whose pages were never successfully locked.
  1712. 2 - MDL address
  1713. 3 - MDL flags
  1714. 4 - 0
  1715. 0x7D : MmUnlockPages called with an MDL whose pages are from nonpaged pool - these should never be unlocked.
  1716. 2 - MDL address
  1717. 3 - MDL flags
  1718. 4 - 0
  1719. 0x80 : KeSetEvent called when not at DISPATCH_LEVEL or below.
  1720. 2 - current IRQL
  1721. 3 - event address
  1722. 4 - 0
  1723. 0x81 : MmMapLockedPages called without MDL_MAPPING_CAN_FAIL
  1724. 2 - MDL address
  1725. 3 - MDL flags
  1726. 4 - 0
  1727. 0x82 : MmMapLockedPagesSpecifyCache called without MDL_MAPPING_CAN_FAIL
  1728. 2 - MDL address
  1729. 3 - MDL flags
  1730. 4 - Whether to bugcheck on failure
  1731. 0x83 : MmMapIoSpace called to map, but the caller hasn't locked down the MDL pages.
  1732. 2 - Starting physical address to map.
  1733. 3 - Number of bytes to map.
  1734. 4 - The first page frame number that isn't locked down.
  1735. 0x84 : MmMapIoSpace called to map, but the caller hasn't locked down the MDL pages.
  1736. 2 - Starting physical address to map.
  1737. 3 - Number of bytes to map.
  1738. 4 - The first page frame number that is on the free list.
  1739. 0x85 : MmMapLockedPages called to map, but the caller hasn't locked down the MDL pages.
  1740. 2 - MDL address.
  1741. 3 - Number of pages to map.
  1742. 4 - The first page frame number that isn't locked down.
  1743. 0x86 : MmMapLockedPages called to map, but the caller hasn't locked down the MDL pages.
  1744. 2 - MDL address.
  1745. 3 - Number of pages to map.
  1746. 4 - The first page frame number that is on the free list.
  1747. 0x90 : A driver switched stacks. The current stack is neither a thread
  1748. stack nor a DPC stack. Typically the driver doing this should be
  1749. on the stack obtained from `kb' command.
  1750. DESCRIPTION
  1751. Parameter 1 = 0x1000 .. 0x1020 - deadlock verifier error codes. Typically the
  1752. code is 0x1001 (deadlock detected) and you can issue a
  1753. `!deadlock' KD command to get more information.
  1754. DRIVER_CORRUPTED_EXPOOL (0xC5)
  1755. PARAMETERS
  1756. 1 - memory referenced
  1757. 2 - IRQL
  1758. 3 - value 0 = read operation, 1 = write operation
  1759. 4 - address which referenced memory
  1760. DESCRIPTION
  1761. An attempt was made to access a pagable (or completely invalid) address at an
  1762. interrupt request level (IRQL) that is too high. This is
  1763. caused by drivers that have corrupted the system pool. Run the driver
  1764. verifier against any new (or suspect) drivers, and if that doesn't turn up
  1765. the culprit, then use gflags to enable special pool.
  1766. DRIVER_CAUGHT_MODIFYING_FREED_POOL (0xC6)
  1767. PARAMETERS
  1768. 1 - memory referenced
  1769. 2 - value 0 = read operation, 1 = write operation
  1770. 3 - previous mode.
  1771. 4 - 4.
  1772. DESCRIPTION
  1773. An attempt was made to access freed pool memory. The faulty component is
  1774. displayed in the current kernel stack.
  1775. TIMER_OR_DPC_INVALID (0xC7)
  1776. A kernel timer or DPC was found in memory which must not contain such items.
  1777. Usually this is memory being freed. This is usually caused by a device driver
  1778. that has not cleaned up properly before freeing memory.
  1779. PARAMETERS
  1780. 1 - What kind of object
  1781. 0 Timer Object
  1782. 1 DPC Object
  1783. 2 DPC Routine
  1784. 2 - Address of object
  1785. 3 - Start of range being checked
  1786. 4 - End of range being checked
  1787. IRQL_UNEXPECTED_VALUE (0xC8)
  1788. The processor's IRQL is not what it should be at this time. This is
  1789. usually caused by a lower level routine changing IRQL for some period
  1790. and not restoring IRQL at the end of that period (eg acquires spinlock
  1791. but doesn't release it).
  1792. PARAMETERS
  1793. 1 - (Current IRQL << 16) | (Expected IRQL << 8) | UniqueValue
  1794. DESCRIPTION
  1795. if UniqueValue is 0 or 1
  1796. 2 = APC->KernelRoutine
  1797. 3 = APC
  1798. 4 = APC->NormalRoutine
  1799. DRIVER_VERIFIER_IOMANAGER_VIOLATION (0xC9)
  1800. The IO manager has caught a misbehaving driver.
  1801. PARAMETERS
  1802. 1 - Code that specifies the violation
  1803. VALUES:
  1804. 1 : Invalid IRP passed to IoFreeIrp
  1805. 2 - the IRP passed in , 3/4 - 0
  1806. 2 : IRP still associated with a thread at IoFreeIrp
  1807. 2 - the IRP passed in , 3/4 - 0
  1808. 3 : Invalid IRP passed to IoCallDriver
  1809. 2 - the IRP passed in , 3/4 - 0
  1810. 4 : Invalid Device object passed to IoCallDriver
  1811. 2 - the Device object , 3/4 - 0
  1812. 5 : Irql not equal across call to the driver dispatch routine
  1813. 2 - the device object associated with the offending driver
  1814. 3 - the Irql before the call
  1815. 4 - the Irql after the call
  1816. 6 : IRP passed to IoCompleteRequest contains invalid status
  1817. 2 - the status
  1818. 3 - the IRP
  1819. 4 - 0
  1820. 7 : IRP passed to IoCompleteRequest still has cancel routine set
  1821. 2 - the cancel routine pointer
  1822. 3 - the IRP
  1823. 4 - 0
  1824. 8 : Call to IoBuildAsynchronousFsdRequest threw an exception
  1825. 2 - the Device object
  1826. 3 - the IRP major function
  1827. 4 - the exception status
  1828. 9 : Call to IoBuildDeviceIoControlRequest threw an exception
  1829. 2 - the Device object
  1830. 3 - the IoControlCode
  1831. 4 - the exception status
  1832. 10 : Reinitialization of Device object timer
  1833. 2 - the Device object , 3/4 - 0
  1834. 11 : Unused
  1835. 12 : Invalid IOSB in IRP at APC IopCompleteRequest (appears to be on
  1836. stack that was unwound)
  1837. 2 - the IOSB pointer , 3/4 - 0
  1838. 13 : Invalid UserEvent in IRP at APC IopCompleteRequest (appears to be on
  1839. stack that was unwound)
  1840. 2 - the UserEvent pointer , 3/4 - 0
  1841. 14 : Irql > DPC at IoCompleteRequest
  1842. 2 - the current Irql
  1843. 3 - the IRP
  1844. 4 - 0
  1845. PNP_DETECTED_FATAL_ERROR (0xCA)
  1846. PnP encountered a severe error, either as a result of a problem in a driver or
  1847. a problem in PnP itself. The first argument describes the nature of the
  1848. problem, the second argument is the address of the PDO. The other arguments
  1849. vary depending on argument 1.
  1850. PARAMETERS
  1851. 1 - Type of error.
  1852. 2 - Address of PDO.
  1853. 3 - Varies depending on argument 1
  1854. 4 - Varies depending on argument 1
  1855. Argument 1 -
  1856. VALUES:
  1857. 1 : Duplicate PDO
  1858. A specific instance of a driver has enumerated multiple PDOs with
  1859. identical device id and unique ids.
  1860. 2 - Newly reported PDO.
  1861. 3 - PDO of which it is a duplicate.
  1862. 2 : Invalid PDO
  1863. An API which requires a PDO has been called with either an FDO, a PDO
  1864. which hasn't been initialized yet (returned to PnP in a
  1865. QueryDeviceRelation/BusRelations), or some random piece of memory.
  1866. 2 - Purported PDO.
  1867. 3 : Invalid ID
  1868. An enumerator has returned an ID which contains illegal characters or
  1869. isn't properly terminated. IDs must only contain characters in the
  1870. range 0x20-7F inclusive with the exception of 0x2C (comma) which is
  1871. illegal.
  1872. 2 - PDO whose IDs were queried
  1873. 3 - Address of ID buffer
  1874. 4 - Type of ID
  1875. VALUES
  1876. 1 : DeviceID
  1877. 2 : UniqueID
  1878. 3 : HardwareIDs
  1879. 4 : CompatibleIDs
  1880. END_VALUES
  1881. 4 : Invalid enumeration of deleted PDO
  1882. An enumerator has returned a PDO which it has previously deleted using
  1883. IoDeleteDevice.
  1884. 2 - PDO with DOE_DELETE_PENDING set.
  1885. 5 : PDO freed while still linked in devnode tree.
  1886. The object manager reference count on a PDO dropped to zero while the
  1887. devnode was still linked in the tree. This usually indicates that the
  1888. driver is not adding a reference when returning the PDO in a query IRP.
  1889. 2 - PDO.
  1890. DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS (0xCB)
  1891. PARAMETERS
  1892. 1 - The calling address in the driver that locked the pages or if the IO manager locked the pages this
  1893. points to the dispatch routine of the top driver on the stack to which the IRP was sent.
  1894. 2 - The caller of the calling address in the driver that locked the pages. If the IO manager locked the pages
  1895. this points to the device object of the top driver on the stack to which the IRP was sent.
  1896. 3 - A pointer to the MDL containing the locked pages.
  1897. 4 - The guilty driver's name (Unicode string).
  1898. DESCRIPTION
  1899. Caused by a driver not cleaning up completely after an I/O. The bad driver's
  1900. name is printed on the bugcheck screen and is available for re-dumping as
  1901. parameter 4 in the bugcheck data.
  1902. The broken driver's name is displayed on the screen.
  1903. PAGE_FAULT_IN_FREED_SPECIAL_POOL (0xCC)
  1904. PARAMETERS
  1905. 1 - memory referenced
  1906. 2 - value 0 = read operation, 1 = write operation
  1907. 3 - if non-zero, the address which referenced memory.
  1908. 4 - Mm internal code.
  1909. DESCRIPTION
  1910. Memory was referenced after it was freed.
  1911. This cannot be protected by try-except.
  1912. When possible, the guilty driver's name (Unicode string) is printed on
  1913. the bugcheck screen and saved in KiBugCheckDriver.
  1914. PAGE_FAULT_BEYOND_END_OF_ALLOCATION (0xCD)
  1915. PARAMETERS
  1916. 1 - memory referenced
  1917. 2 - value 0 = read operation, 1 = write operation
  1918. 3 - if non-zero, the address which referenced memory.
  1919. 4 - Mm internal code.
  1920. DESCRIPTION
  1921. N bytes of memory was allocated and more than N bytes are being referenced.
  1922. This cannot be protected by try-except.
  1923. When possible, the guilty driver's name (Unicode string) is printed on
  1924. the bugcheck screen and saved in KiBugCheckDriver.
  1925. DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS (0xCE)
  1926. A driver unloaded without cancelling timers, DPCs, worker threads, etc.
  1927. The broken driver's name is displayed on the screen.
  1928. PARAMETERS
  1929. 1 - memory referenced
  1930. 2 - value 0 = read operation, 1 = write operation
  1931. 3 - If non-zero, the instruction address which referenced the bad memory
  1932. address.
  1933. 4 - Mm internal code.
  1934. TERMINAL_SERVER_DRIVER_MADE_INCORRECT_MEMORY_REFERENCE (0xCF)
  1935. PARAMETERS
  1936. 1 - memory referenced
  1937. 2 - value 0 = read operation, 1 = write operation
  1938. 3 - If non-zero, the instruction address which referenced the bad memory
  1939. address.
  1940. 4 - Mm internal code.
  1941. A driver has been incorrectly ported to Terminal Server. It is referencing
  1942. session space addresses from the system process context. Probably from
  1943. queueing an item to a system worker thread.
  1944. The broken driver's name is displayed on the screen.
  1945. DRIVER_CORRUPTED_MMPOOL (0xD0)
  1946. PARAMETERS
  1947. 1 - memory referenced
  1948. 2 - IRQL
  1949. 3 - value 0 = read operation, 1 = write operation
  1950. 4 - address which referenced memory
  1951. An attempt was made to access a pagable (or completely invalid) address at an
  1952. interrupt request level (IRQL) that is too high. This is
  1953. caused by drivers that have corrupted the system pool. Run the driver
  1954. verifier against any new (or suspect) drivers, and if that doesn't turn up
  1955. the culprit, then use gflags to enable special pool. You can also set
  1956. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\ProtectNonPagedPool to a DWORD 1 value and reboot. Then the system will unmap freed nonpaged pool, preventing drivers (although not DMA-hardware) from corrupting
  1957. the pool.
  1958. DRIVER_IRQL_NOT_LESS_OR_EQUAL (0xD1)
  1959. PARAMETERS
  1960. 1 - memory referenced
  1961. 2 - IRQL
  1962. 3 - value 0 = read operation, 1 = write operation
  1963. 4 - address which referenced memory
  1964. DESCRIPTION
  1965. An attempt was made to access a pagable (or completely invalid) address at an
  1966. interrupt request level (IRQL) that is too high. This is usually
  1967. caused by drivers using improper addresses.
  1968. If kernel debugger is available get stack backtrace.
  1969. DRIVER_PORTION_MUST_BE_NONPAGED (0xD3)
  1970. PARAMETERS
  1971. 1 - memory referenced
  1972. 2 - IRQL
  1973. 3 - value 0 = read operation, 1 = write operation
  1974. If this value is non-zero and is equal to parameter 1, then
  1975. The bugcheck indicates that a worker routine returned at raised
  1976. IRQL.Parameter 1 and 3 are the address of the work routine, and
  1977. parameter 4 is the workitem
  1978. 4 - address which referenced memory
  1979. DESCRIPTION
  1980. When possible, the guilty driver's name (Unicode string) is printed on
  1981. the bugcheck screen and saved in KiBugCheckDriver.
  1982. An attempt was made to access a pagable (or completely invalid) address at an
  1983. interrupt request level (IRQL) that is too high. This is usually
  1984. caused by drivers marking code or data as pagable when it should be
  1985. marked nonpaged.
  1986. If kernel debugger is available get stack backtrace.
  1987. SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD (0xD4)
  1988. A driver unloaded without cancelling lookaside lists, DPCs, worker threads, etc.
  1989. The broken driver's name is displayed on the screen.
  1990. PARAMETERS
  1991. 1 - memory referenced
  1992. 2 - IRQL
  1993. 3 - value 0 = read operation, 1 = write operation
  1994. If this value is non-zero and is equal to parameter 1, then
  1995. The bugcheck indicates that a worker routine returned at raised
  1996. IRQL.Parameter 1 and 3 are the address of the work routine, and
  1997. parameter 4 is the workitem
  1998. 4 - address which referenced memory
  1999. DESCRIPTION
  2000. When possible, the guilty driver's name (Unicode string) is printed on
  2001. the bugcheck screen and saved in KiBugCheckDriver.
  2002. An attempt was made to access the driver at raised IRQL after it unloaded.
  2003. If kernel debugger is available get stack backtrace.
  2004. DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL (0xD5)
  2005. PARAMETERS
  2006. 1 - memory referenced
  2007. 2 - value 0 = read operation, 1 = write operation
  2008. 3 - if non-zero, the address which referenced memory.
  2009. 4 - Mm internal code.
  2010. DESCRIPTION
  2011. Memory was referenced after it was freed.
  2012. This cannot be protected by try-except.
  2013. When possible, the guilty driver's name (Unicode string) is printed on
  2014. the bugcheck screen and saved in KiBugCheckDriver.
  2015. DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION (0xD6)
  2016. PARAMETERS
  2017. 1 - memory referenced
  2018. 2 - value 0 = read operation, 1 = write operation
  2019. 3 - if non-zero, the address which referenced memory.
  2020. 4 - Mm internal code.
  2021. DESCRIPTION
  2022. N bytes of memory was allocated and more than N bytes are being referenced.
  2023. This cannot be protected by try-except.
  2024. When possible, the guilty driver's name (Unicode string) is printed on
  2025. the bugcheck screen and saved in KiBugCheckDriver.
  2026. DRIVER_UNMAPPING_INVALID_VIEW (0xD7)
  2027. PARAMETERS
  2028. 1 - virtual address to unmap.
  2029. 2 - 1.
  2030. 3 - 0.
  2031. 4 - 0.
  2032. DESCRIPTION
  2033. A driver (usually win32k.sys, but can be determined from the stack trace for
  2034. certain) is trying to unmap an address that was not mapped.
  2035. DRIVER_USED_EXCESSIVE_PTES (0xD8)
  2036. PARAMETERS
  2037. 1 - If non-null, the guilty driver's name (Unicode string).
  2038. 2 - If parameter 1 non-null, the number of PTEs used by the guilty driver.
  2039. 3 - Total free system PTEs
  2040. 4 - Total system PTEs
  2041. DESCRIPTION
  2042. No System PTEs left. Usually caused by a driver not cleaning up
  2043. properly. If non-null, the second parameter shows the name of the driver
  2044. who is consuming the most PTEs. The calling stack also shows the name of
  2045. the driver which bugchecked. Both drivers need to be fixed and/or the number
  2046. of PTEs increased.
  2047. When possible, the guilty driver's name (Unicode string) is printed on
  2048. the bugcheck screen and saved in KiBugCheckDriver.
  2049. LOCKED_PAGES_TRACKER_CORRUPTION (0xD9)
  2050. PARAMETERS
  2051. 1 - Type of error.
  2052. VALUES:
  2053. 1 : The MDL is being inserted twice on the same process list.
  2054. 2 - Address of internal lock tracking structure.
  2055. 3 - Address of memory descriptor list.
  2056. 4 - Number of pages locked for the current process.
  2057. 2 : The MDL is being inserted twice on the systemwide list.
  2058. 2 - Address of internal lock tracking structure.
  2059. 3 - Address of memory descriptor list.
  2060. 4 - Number of pages locked for the current process.
  2061. 3 : The MDL was found twice in the process list when being freed.
  2062. Arguments:
  2063. 2 - Address of first internal tracking structure found.
  2064. 3 - Address of internal lock tracking structure.
  2065. 4 - Address of memory descriptor list.
  2066. 4 : The MDL was found in the systemwide list on free after it was removed.
  2067. 2 - Address of internal lock tracking structure.
  2068. 3 - Address of memory descriptor list.
  2069. 4 - 0.
  2070. SYSTEM_PTE_MISUSE (0xDA)
  2071. The stack trace identifies the guilty driver.
  2072. PARAMETERS
  2073. 1 - Type of error.
  2074. VALUES:
  2075. 1 : The PTE mapping being freed is a duplicate.
  2076. 2 - Address of internal lock tracking structure.
  2077. 3 - Address of memory descriptor list.
  2078. 4 - Address of duplicate internal lock tracking structure.
  2079. 2 : The number of PTE mappings being freed is incorrect.
  2080. 2 - Address of internal lock tracking structure.
  2081. 3 - Number of PTEs the system thinks should be freed.
  2082. 4 - Number of PTEs the driver is requesting to free.
  2083. 3 : The PTE mapping address being freed is incorrect.
  2084. 2 - Address of first internal tracking structure found.
  2085. 3 - The PTE address the system thinks should be freed.
  2086. 4 - The PTE address the driver is requesting to free.
  2087. 4 : The first page of the mapped MDL has changed since the MDL was mapped.
  2088. 2 - Address of internal lock tracking structure.
  2089. 3 - Page frame number the system thinks should be first in the MDL.
  2090. 4 - Page frame number that is currently first in the MDL.
  2091. 5 : The start virtual address in the MDL being freed has changed since
  2092. the MDL was mapped.
  2093. 2 - Address of first internal tracking structure found.
  2094. 3 - The virtual address the system thinks should be freed.
  2095. 4 - The virtual address the driver is requesting to free.
  2096. 6 : The MDL being freed was never (or is currently not) mapped.
  2097. 2 - The MDL specified by the driver.
  2098. 3 - The virtual address specified by the driver.
  2099. 4 - The number of PTEs to free (specified by the driver).
  2100. 7 : The PTE range is being double allocated.
  2101. 2 - Starting PTE.
  2102. 3 - Number of PTEs.
  2103. 4 - Caller Id (system internal).
  2104. 8 : The caller is asking to free an incorrect number of PTEs.
  2105. 2 - Starting PTE.
  2106. 3 - Number of PTEs the caller is freeing.
  2107. 4 - Number of PTEs the system thinks should be freed.
  2108. 9 : The caller is asking to free PTEs where one of them is not allocated.
  2109. 2 - Starting PTE.
  2110. 3 - Number of PTEs the caller is freeing.
  2111. 4 - PTE index that the system thinks is already free.
  2112. 0xA : The caller is asking to allocate 0 PTEs.
  2113. 2 - Bugcheck on failure parameter.
  2114. 3 - Number of PTEs the caller is allocating.
  2115. 4 - Type of PTE pool requested.
  2116. 0xB : The PTE list is already corrupted at the time of this allocation.
  2117. The corrupt PTE is below the lowest possible PTE address.
  2118. 2 - Corrupt PTE.
  2119. 3 - Number of PTEs the caller is allocating.
  2120. 4 - Type of PTE pool requested.
  2121. 0xC : The PTE list is already corrupted at the time of this allocation.
  2122. The corrupt PTE is above the lowest possible PTE address.
  2123. 2 - Corrupt PTE.
  2124. 3 - Number of PTEs the caller is allocating.
  2125. 4 - Type of PTE pool requested.
  2126. 0xD : The caller is trying to free 0 PTEs.
  2127. 2 - Starting PTE.
  2128. 3 - Number of PTEs the caller is freeing.
  2129. 4 - Type of PTE pool.
  2130. 0xE : The caller is trying to free PTEs and the guard PTE has been overwritten.
  2131. 2 - Starting PTE.
  2132. 3 - Number of PTEs the caller is freeing.
  2133. 4 - Type of PTE pool.
  2134. 0xF : The caller is trying to free a bogus PTE.
  2135. The bogus PTE is below the lowest possible PTE address.
  2136. 2 - Bogus PTE.
  2137. 3 - Number of PTEs the caller is trying to free.
  2138. 4 - Type of PTE pool being freed.
  2139. 0x10 : The caller is trying to free a bogus PTE.
  2140. The bogus PTE is above the highest possible PTE address.
  2141. 2 - Bogus PTE.
  2142. 3 - Number of PTEs the caller is trying to free.
  2143. 4 - Type of PTE pool being freed.
  2144. 0x11 : The caller is trying to free a bogus PTE.
  2145. The bogus PTE is at the base of the PTE address space.
  2146. 2 - Bogus PTE.
  2147. 3 - Number of PTEs the caller is trying to free.
  2148. 4 - Type of PTE pool being freed.
  2149. DRIVER_CORRUPTED_SYSPTES (0xDB)
  2150. PARAMETERS
  2151. 1 - memory referenced
  2152. 2 - IRQL
  2153. 3 - value 0 = read operation, 1 = write operation
  2154. 4 - address which referenced memory
  2155. DESCRIPTION
  2156. An attempt was made to access a pagable (or completely invalid) address at an
  2157. interrupt request level (IRQL) that is too high. This is
  2158. caused by drivers that have corrupted system PTEs. Set
  2159. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes to a DWORD 3 value and reboot. Then the system will save stack traces and
  2160. perform validity checks so the guilty driver can be identified.
  2161. There is no other way to find out which driver did this. When you enable
  2162. this flag, if the driver commits the error again you will see a different
  2163. bugcheck - SYSTEM_PTE_MISUSE - and the stack trace will identify the offending
  2164. driver(s).
  2165. DRIVER_INVALID_STACK_ACCESS (0xDC)
  2166. A driver accessed a stack address that lies below the stack pointer of the
  2167. stack's thread.
  2168. POOL_CORRUPTION_IN_FILE_AREA (0xDE)
  2169. A driver corrupted pool memory used for holding pages destined for disk.
  2170. This was discovered by the memory manager when dereferencing the file.
  2171. IMPERSONATING_WORKER_THREAD (0xDF)
  2172. A workitem forgot to disable impersonation before it completed.
  2173. PARAMETERS
  2174. 1 - Worker Routine that caused this bugcheck.
  2175. 2 - Parameter passed to this worker routine.
  2176. 3 - Pointer to the Workitem.
  2177. ACPI_BIOS_FATAL_ERROR (0xE0)
  2178. Your computer (BIOS) has reported that a component in your system is faulty and
  2179. has prevented Windows from operating. You can determine which component is
  2180. faulty by running the diagnostic disk or tool that came with your computer.
  2181. If you do not have this tool, you must contact your system vendor and report
  2182. this error message to them. They will be able to assist you in correcting this
  2183. hardware problem thereby allowing Windows to operate.
  2184. WORKER_THREAD_RETURNED_AT_BAD_IRQL (0xE1)
  2185. PARAMETERS
  2186. 1 - address of worker routine (do ln on this to find guilty driver)
  2187. 2 - IRQL returned at (should have been 0, but isn't).
  2188. 3 - workitem parameter
  2189. 4 - workitem address
  2190. MANUALLY_INITIATED_CRASH (0xE2)
  2191. The user manually initiated this crash dump.
  2192. RESOURCE_NOT_OWNED (0xE3)
  2193. A thread tried to release a resource it did not own.
  2194. PARAMETERS
  2195. 1 - Address of resource
  2196. 2 - Address of thread
  2197. 3 - Address of owner table if there is one
  2198. WORKER_INVALID (0xE4)
  2199. A executive worker item was found in memory which must not contain such
  2200. items. Usually this is memory being freed. This is usually caused by
  2201. a device driver that has not cleaned up properly before freeing memory.
  2202. PARAMETERS
  2203. 1 - Code position indicator
  2204. 2 - Address of worker item
  2205. 3 - Start of pool block
  2206. 4 - End of pool block
  2207. DRIVER_VERIFIER_DMA_VIOLATION (0xE6)
  2208. An illegal DMA operation was attempted by a driver being verified.
  2209. PARAMETERS
  2210. 1- Violation code.
  2211. VALUES:
  2212. 0x03 : Double-freed DMA common buffer.
  2213. 0x04 : Double-freed DMA adapter channel.
  2214. 0x05 : Double-freed DMA map register.
  2215. 0x06 : Double-freed DMA scatter-gather list.
  2216. 0x0E : Buffer not locked. DMA transfer has been
  2217. attempted with a PAGED buffer.
  2218. 0x0F : Boundary overrun. Driver or DMA hardware has
  2219. written outside of its allocation.
  2220. 0x18 : Adapter already released. A DMA operation has been
  2221. attempted using an adapter that no longer exists.
  2222. INVALID_FLOATING_POINT_STATE (0xE7)
  2223. While restoring the previously saved floating point state for a thread,
  2224. the state was found to be invalid. The first argument indicates which
  2225. validity check failed.
  2226. PARAMETERS
  2227. 1 - indicates which validity check failed.
  2228. VALUES:
  2229. 0 : Saved context flags field is invalid, either FLOAT_SAVE_VALID
  2230. is not set or some of the reserved bits are non-zero. Second
  2231. argument is the flags field.
  2232. 1 : The current processor interrupt priority level (IRQL) is not
  2233. the same as when the floating point context was saved.
  2234. Second argument is saved IRQL, third is current IRQL.
  2235. 2 : The saved context does not belong to the current thread.
  2236. Second argument is the saved address of the thread this
  2237. floating point context belongs to, third argument is the
  2238. current thread.
  2239. INVALID_CANCEL_OF_FILE_OPEN (0xE8)
  2240. The fileobject passed to IoCancelFileOpen is invalid. It should have reference of 1. The driver
  2241. that called IoCancelFileOpen is at fault.
  2242. PARAMETERS
  2243. 1 - FileObject passed to IoCancelFileOpen
  2244. 2 - DeviceObject passed to IoCancelFileOpen
  2245. ACTIVE_EX_WORKER_THREAD_TERMINATION (0xE9)
  2246. An executive worker thread is being terminated without having gone through
  2247. the worker thread rundown code. A stack trace should indicate the cause.
  2248. PARAMETERS
  2249. 1 - The exiting ETHREAD.
  2250. THREAD_STUCK_IN_DEVICE_DRIVER (0xEA)
  2251. The device driver is spinning in an infinite loop, most likely waiting for
  2252. hardware to become idle. This usually indicates problem with the hardware
  2253. itself or with the device driver programming the hardware incorrectly.
  2254. 1 - Pointer to a stuck thread object. Do .thread then kb on it to
  2255. find hung location.
  2256. 2 - Pointer to a DEFERRED_WATCHDOG object.
  2257. 3 - Pointer to offending driver name.
  2258. 4 - Number of times "intercepted" bugcheck 0xEA was hit (see notes).
  2259. DESCRIPTION
  2260. If the kernel debugger is connected and running when watchdog detects a
  2261. timeout condition then DbgBreakPoint() will be called instead of KeBugCheckEx()
  2262. and detailed message including bugcheck arguments will be printed to the
  2263. debugger. This way we can identify an offending thread, set breakpoints in it,
  2264. and hit go to return to the spinning code to debug it further. Because
  2265. KeBugCheckEx() is not called the .bugcheck directive will not return bugcheck
  2266. information in this case. The argumentes are already printed out to the kernel
  2267. debugger. You can also retrieve them from watchdog's global variable via
  2268. "dd watchdog!g_WdBugCheckData l5" (use dq on NT64).
  2269. On MP machines it is possble to hit a timeout when the spinning thread is
  2270. interrupted by hardware interrupt and ISR routine is running at the time of
  2271. the bugcheck (this is because watchdog's work item can be delivered and
  2272. handled on the second CPU and the same time). If this is the case you will have
  2273. to look deeper at the offending thread's stack (e.g. using dds) to determine
  2274. spinning code which caused the timeout to occur.
  2275. DIRTY_MAPPED_PAGES_CONGESTION (0xEB)
  2276. PARAMETERS
  2277. 1 - Total number of dirty pages
  2278. 2 - Number of dirty pages destined for the pagefile(s).
  2279. 3 - Nonpaged pool available at time of bugcheck (in pages).
  2280. 4 - Number of transition pages that are currently stranded.
  2281. DESCRIPTION
  2282. No free pages available to continue operations.
  2283. If kernel debugger available, type "!vm 3".
  2284. This bugcheck usually occurs for the following reasons:
  2285. 1. A driver has blocked, deadlocking the modified or mapped
  2286. page writers. Examples of this include mutex deadlocks or
  2287. accesses to paged out memory in filesystem drivers, filter
  2288. drivers, etc. This indicates a driver bug.
  2289. 2. The storage driver(s) are not processing requests. Examples
  2290. of this are stranded queues, non-responding drives, etc. This
  2291. indicates a driver bug.
  2292. If parameter 1 or 2 is large, then this is a possibility. Type
  2293. "!process 8 7" in the kernel debugger.
  2294. 3. Not enough pool is available for the storage stack to write out
  2295. modified pages. This indicates a driver bug.
  2296. If parameter 3 is small, then this is a possibility. Type
  2297. "!vm" and "!poolused 2" in the kernel debugger.
  2298. SESSION_HAS_VALID_SPECIAL_POOL_ON_EXIT (0xEC)
  2299. PARAMETERS
  2300. 1 - session ID
  2301. 2 - number of special pool pages that are leaking
  2302. DESCRIPTION
  2303. Caused by a session driver not freeing its pool allocations prior to a
  2304. session unload. This typically indicates a bug in win32k.sys, atmfd.dll,
  2305. rdpdd.dll or a video driver.
  2306. UNMOUNTABLE_BOOT_VOLUME (0xED)
  2307. The IO subsystem attempted to mount the boot volume and it failed.
  2308. PARAMETERS
  2309. 1 - Device object of the boot volume
  2310. 2 - Status code from the filesystem on why it failed to mount the volume
  2311. SCSI_VERIFIER_DETECTED_VIOLATION (0xF1)
  2312. PARAMETERS
  2313. 1 - Error code:
  2314. VALUES
  2315. 1000 : Miniport passed bad params to ScsiPortInitialize
  2316. 2 - First argument to ScsiPortInitialize
  2317. 3 - Second argument to ScsiPortInitialize
  2318. 1001 : Miniport stalled processor too long
  2319. 2 - Delay in microseconds supplied by miniport
  2320. 1002 : Miniport routine executed too long
  2321. 2 - Address of routine that ran too long
  2322. 3 - Address of miniport's HwDeviceExtension
  2323. 4 - Duration of the routine in microseconds
  2324. 1003 : Miniport completed a request multiple times
  2325. 2 - Address of miniport's HwDeviceExtension
  2326. 3 - Address of SRB of multiply completed request
  2327. 1004 : Miniport has completed request with bad status
  2328. 2 - Address of SRB
  2329. 3 - Address of miniport's HwDeviceExtension
  2330. 1005 : Miniport has asked for the next LU request while
  2331. an untagged request is active
  2332. 2 - Address of miniport's HwDeviceExtension
  2333. 3 - Address of logical unit extension
  2334. 1006 : Miniport called ScsiportGetPhysicalAddress with a bad VA
  2335. 2 - Address of miniport's HwDeviceExtension
  2336. 3 - VA supplied by the miniport
  2337. 1007 : Miniport had outstanding requests at the end of a bus reset period
  2338. 2 - Address of adapter extension
  2339. 3 - Address of miniport's HwDeviceExtension
  2340. DESCRIPTION
  2341. The SCSI verifier has detected an error in a SCSI miniport driver being verified.
  2342. HARDWARE_INTERRUPT_STORM (0xF2)
  2343. PARAMETERS
  2344. 1 - address of the ISR (or first ISR in the chain) connected to the storming interrupt vector
  2345. 2 - ISR context value
  2346. 3 - address of the interrupt object for the storming interrupt vector
  2347. 4 - 0x1 if the ISR is not chained, 0x2 if the ISR is chained
  2348. DESCRIPTION
  2349. This bugcheck, 0xF2 (a.k.a. , will show up on the screen when the kernel
  2350. detects an interrupt "storm". An interrupt storm is defined as a level
  2351. triggered interrupt signal staying in the asserted state. This is fatal
  2352. to the system in the manner that the system will hard hang, or "bus lock".
  2353. This can happen because of the following:
  2354. - A piece of hardware does not release its interrupt signal after being told to do so by the device driver
  2355. - A device driver does not instruct its hardware to release the interrupt signal because it does not
  2356. believe the interrupt was initiated from its hardware
  2357. - A device driver claims the interrupt even though the interrupt was not initiated from its hardware.
  2358. Note that this can only occur when multiple devices are sharing the same IRQ.
  2359. - The ELCR (edge level control register) is set incorrectly.
  2360. - Edge and Level interrupt triggered devices share an IRQ (e.g. COM port and PCI SCSI controller).
  2361. All of these cases will instantly hard hang your system. Instead of hard
  2362. hanging the system, this bugcheck is initiated since in many cases it can
  2363. identify the culprit.
  2364. When the bugcheck occurs, the module containing the ISR (interrupt service
  2365. routine) of the storming IRQ is displayed on the screen. This is an
  2366. example of what you would see:
  2367. *** STOP: 0x000000F2 (0xFCA7C55C, 0x817B9B28, 0x817D2AA0, 0x00000002)
  2368. An interrupt storm has caused the system to hang.
  2369. *** Address FCA7C55C base at FCA72000, Datestamp 3A72BDEF - ACPI.sys
  2370. In the event the fourth parameter is a 0x00000001, the module pointed to
  2371. is very likely the culprit. Either the driver is broken, or the hardware
  2372. is malfunctioning.
  2373. In the event the fourth parameter is a 0x00000002, the module pointed to
  2374. is the first ISR in the chain, and is never guaranteed to be the culprit.
  2375. A user experiencing this bugcheck repeatedly should try to isolate the
  2376. problem by looking for devices that are on the same IRQ as the one for
  2377. which the module is a driver for (in this case, the same IRQ that ACPI
  2378. is using). In the future, we may be able to list all devices on a
  2379. chained ISR.
  2380. If you see a bugcheck like this, you should send mail to WINIRQTR to
  2381. have the system debugged. People on this alias are well trained to debug
  2382. this type of failure and can typically isolate the faulty hardware or
  2383. device driver quickly.
  2384. DISORDERLY_SHUTDOWN (0xF3)
  2385. PARAMETERS
  2386. 1 - Total number of dirty pages
  2387. 2 - Number of dirty pages destined for the pagefile(s).
  2388. 3 - Nonpaged pool available at time of bugcheck (in pages).
  2389. 4 - Current shutdown stage.
  2390. DESCRIPTION
  2391. No free pages available to continue operations.
  2392. Because applications are not terminated and drivers are
  2393. not unloaded, they can continue to access pages even after
  2394. the modified writer has terminated. This can cause the
  2395. system to run out of pages since the pagefile(s) cannot be used.
  2396. CRITICAL_OBJECT_TERMINATION (0xF4)
  2397. PARAMETERS
  2398. 1 - Terminating object type
  2399. VALUES:
  2400. 3 : Process
  2401. 6 : Thread
  2402. 2 - Terminating object
  2403. 3 - Process image file name
  2404. 4 - Explanatory message (ascii)
  2405. DESCRIPTION
  2406. A process or thread crucial to system operation has unexpectedly exited or been terminated.
  2407. Several processes and threads are necessary for the operation of the
  2408. system; when they are terminated (for any reason), the system can no
  2409. longer function.
  2410. PCI_VERIFIER_DETECTED_VIOLATION (0xF6)
  2411. PARAMETERS
  2412. 1 - Failure detected
  2413. VALUES:
  2414. 1 : An active bridge was reprogrammed by the BIOS during a docking event
  2415. 2 : The PMCSR register was not updated within the spec mandated time
  2416. 3 : A driver has written to OS controlled portions of a PCI device's config space
  2417. DESCRIPTION
  2418. The PCI driver detected an error in a device or BIOS being verified.
  2419. BUGCODE_USB_DRIVER (0xFE)
  2420. PARAMETERS
  2421. 1 - USB Bugcheck Code:
  2422. VALUES
  2423. 1 : INTERNAL_ERROR An internal error has occured in the USB stack
  2424. 2 : BAD_URB The USB client driver has submitted a URB that is
  2425. still attached to another IRP still pending in the bus
  2426. driver.
  2427. 2 - Address of pending IRP.
  2428. 3 - Address of IRP passed in.
  2429. 4 - Address URB that caused the error.
  2430. 3 : MINIPORT_ERROR The USB miniport driver has generated a
  2431. bugcheck. This is usually in response to catastrophic
  2432. hardware failure.
  2433. 4 : IRP_URB_DOUBLE_SUBMIT The caller has submitted an irp
  2434. that is already pending in the USB bus driver.
  2435. 2 - Address of IRP
  2436. 3 - Address of URB
  2437. DESCRIPTION
  2438. USB Driver bugcheck, first parameter is USB bugcheck code.