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.

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