Leaked source code of windows server 2003
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.

4366 lines
179 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 only 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.
  72. 3 - The enabled and 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.
  90. Parameter 3 - the read back flink freelist value (should be the same as 2).
  91. Parameter 4 - the read back blink freelist value (should be the same as 2).
  92. 5 : the adjacent pool block headers are corrupt.
  93. Parameter 2 - One entry whose headers are not consistent.
  94. Parameter 3 - (reserved)
  95. % Parameter 3 - the line number inside pool.c (generally not useful).
  96. Parameter 4 - Another entry whose headers are not consistent.
  97. 6 : the pool block header previous size is corrupt (too large).
  98. Parameter 2 - One incorrectly calculated entry.
  99. Parameter 3 - (reserved)
  100. % Parameter 3 - the line number inside pool.c (generally not useful).
  101. Parameter 4 - The bad entry that caused the miscalculation.
  102. 7 : the pool block header size is corrupt.
  103. Parameter 2 - 0.
  104. Parameter 3 - (reserved)
  105. % Parameter 3 - the line number inside pool.c (generally not useful).
  106. Parameter 4 - The bad pool entry.
  107. 8 : the pool block header size is corrupt.
  108. Parameter 2 - 0.
  109. Parameter 3 - (reserved)
  110. % Parameter 3 - the line number inside pool.c (generally not useful).
  111. Parameter 4 - The bad pool entry (should have nonzero size but doesn't).
  112. 9 : the pool block header size is corrupt (too large).
  113. Parameter 2 - One incorrectly calculated entry.
  114. Parameter 3 - (reserved)
  115. % Parameter 3 - the line number inside pool.c (generally not useful).
  116. Parameter 4 - The bad entry that caused the miscalculation.
  117. 0xA : a pool block header size is corrupt.
  118. Parameter 2 - The pool entry we were looking for within the page.
  119. Parameter 3 - (reserved)
  120. % Parameter 3 - the line number inside pool.c (generally not useful).
  121. Parameter 4 - The VA of the page that should have contained the pool entry.
  122. END_VALUES
  123. MEMORY_MANAGEMENT (0x1A)
  124. PARAMETERS
  125. 1 - The subtype of the bugcheck:
  126. VALUES:
  127. 0x1 : The fork clone block reference count is corrupt. Only occurs
  128. on checked builds.
  129. 0x777 : The caller is unlocking a system cache address that is not
  130. currently locked. (This address was either never mapped or
  131. is being unlocked twice.)
  132. 0x778 : The system is using the very last system cache view address,
  133. instead of preserving it.
  134. 0x780-781 : The PTEs mapping the argument system cache view have been
  135. corrupted.
  136. 0x1000 : A caller of MmGetSystemAddressForMdl* tried to map a fully-
  137. cached physical page as non-cached. This action would cause
  138. a conflicting hardware translation buffer entry, and so it
  139. was refused by the operating system. Since the caller
  140. specified "bugcheck on failure" in the requesting MDL, the
  141. system had no choice but to bugcheck in this instance.
  142. 0x1010 : The caller is unlocking a pageable section that is not
  143. currently locked. (This section was either never locked or
  144. is being unlocked twice.)
  145. 0x1234 : The caller is trying lock a nonexistent pageable section.
  146. 0x1235 : The caller is trying to protect an MDL with an invalid
  147. mapping.
  148. 0x3451 : The PTEs of an outswapped kernel thread stack are corrupt.
  149. 0x8888-8889 : Internal memory management structures are corrupt.
  150. 0x41283 : The working set index encoded in the PTE is corrupt.
  151. 0x41284 : A PTE or the working set list is corrupt.
  152. 0x41286 : The caller is trying to free an invalid pool address.
  153. 0x41785 : The working set list is corrupt.
  154. 0x61940 : A PDE has been unexpectedly invalidated.
  155. Other : An unknown memory management error occurred.
  156. END_VALUES
  157. DESCRIPTION
  158. # Any other values for parameter 1 must be individually examined.
  159. PFN_SHARE_COUNT (0x1B)
  160. PFN_REFERENCE_COUNT (0x1C)
  161. NO_SPIN_LOCK_AVAILABLE (0x1D)
  162. KMODE_EXCEPTION_NOT_HANDLED (0x1E)
  163. PARAMETERS
  164. 1 - The exception code that was not handled
  165. VALUES
  166. 0x80000002: (STATUS_DATATYPE_MISALIGNMENT) An unaligned data reference was encountered.
  167. The trap frame will supply additional information.
  168. 0x80000003: This means a hard coded breakpoint or assertion was hit, but this system was booted
  169. /NODEBUG. This is not supposed to happen as developers should never have
  170. hardcoded breakpoints in retail code, but ...
  171. If this happens, make sure a debugger gets connected, and the
  172. system is booted /DEBUG. This will let us see why this breakpoint is
  173. happening.
  174. END_VALUES
  175. 2 - The address that the exception occurred at
  176. 3 - Parameter 0 of the exception
  177. 4 - Parameter 1 of the exception
  178. DESCRIPTION
  179. This is a very common bugcheck. Usually the exception address pinpoints
  180. the driver/function that caused the problem. Always note this address
  181. as well as the link date of the driver/image that contains this address.
  182. SHARED_RESOURCE_CONV_ERROR (0x1F)
  183. KERNEL_APC_PENDING_DURING_EXIT (0x20)
  184. PARAMETERS
  185. 1 - The address of the APC found pending during exit.
  186. 2 - The thread's APC disable count
  187. 3 - The current IRQL
  188. DESCRIPTION
  189. The key data item is the thread's APC disable count.
  190. If this is non-zero, then this is the source of the problem.
  191. The APC disable count is decremented each time a driver calls
  192. KeEnterCriticalRegion, KeInitializeMutex, or FsRtlEnterFileSystem. The APC
  193. disable count is incremented each time a driver calls KeLeaveCriticalRegion,
  194. KeReleaseMutex, or FsRtlExitFileSystem. Since these calls should always be in
  195. pairs, this value should be zero when a thread exits. A negative value
  196. indicates that a driver has disabled APC calls without re-enabling them. A
  197. positive value indicates that the reverse is true.
  198. If you ever see this error, be very suspicious of all drivers installed on the
  199. machine -- especially unusual or non-standard drivers. Third party file
  200. system redirectors are especially suspicious since they do not generally
  201. receive the heavy duty testing that NTFS, FAT, RDR, etc receive.
  202. This current IRQL should also be 0. If it is not, that a driver's
  203. cancelation routine can cause this bugcheck by returning at an elevated
  204. IRQL. Always attempt to note what you were doing/closing at the
  205. time of the crash, and note all of the installed drivers at the time of
  206. the crash. This symptom is usually a severe bug in a third party
  207. driver.
  208. QUOTA_UNDERFLOW (0x21)
  209. FILE_SYSTEM (0x22)
  210. FAT_FILE_SYSTEM (0x23)
  211. % All file system bug checks have encoded in their first ULONG
  212. % the source file and the line within the source file that generated
  213. % the bugcheck. The high 16-bits contains a number to identify the
  214. % file and low 16-bits is the source line within the file where
  215. % the bug check call occurs. For example, 0x00020009 indicates
  216. % that the FAT file system bugcheck occurred in source file #2 and
  217. % line #9.
  218. %
  219. % The file system calls bug check in multiple places and this will
  220. % help us identify the actual source line that generated the bug
  221. % check.
  222. If you see FatExceptionFilter on the stack then the 2nd and 3rd
  223. parameters are the exception record and context record. Do a .cxr
  224. on the 3rd parameter and then kb to obtain a more informative stack
  225. trace.
  226. NTFS_FILE_SYSTEM (0x24)
  227. % All file system bug checks have encoded in their first ULONG
  228. % the source file and the line within the source file that generated
  229. % the bugcheck. The high 16-bits contains a number to identify the
  230. % file and low 16-bits is the source line within the file where
  231. % the bug check call occurs. For example, 0x00020009 indicates
  232. % that the NTFS file system bugcheck occurred in source file #2 and
  233. % line #9.
  234. %
  235. % The file system calls bug check in multiple places and this will
  236. % help us identify the actual source line that generated the bug
  237. % check.
  238. If you see NtfsExceptionFilter on the stack then the 2nd and 3rd
  239. parameters are the exception record and context record. Do a .cxr
  240. on the 3rd parameter and then kb to obtain a more informative stack
  241. trace.
  242. NPFS_FILE_SYSTEM (0x25)
  243. % All file system bug checks have encoded in their first ULONG
  244. % the source file and the line within the source file that generated
  245. % the bugcheck. The high 16-bits contains a number to identify the
  246. % file and low 16-bits is the source line within the file where
  247. % the bug check call occurs. For example, 0x00020009 indicates
  248. % that the NPFS file system bugcheck occurred in source file #2 and
  249. % line #9.
  250. %
  251. % The file system calls bug check in multiple places and this will
  252. % help us identify the actual source line that generated the bug
  253. % check.
  254. CDFS_FILE_SYSTEM (0x26)
  255. % All file system bug checks have encoded in their first ULONG
  256. % the source file and the line within the source file that generated
  257. % the bugcheck. The high 16-bits contains a number to identify the
  258. % file and low 16-bits is the source line within the file where
  259. % the bug check call occurs. For example, 0x00020009 indicates
  260. % that the CD file system bugcheck occurred in source file #2 and
  261. % line #9.
  262. %
  263. % The file system calls bug check in multiple places and this will
  264. % help us identify the actual source line that generated the bug
  265. % check.
  266. If you see CdExceptionFilter on the stack then the 2nd and 3rd
  267. parameters are the exception record and context record. Do a .cxr
  268. on the 3rd parameter and then kb to obtain a more informative stack
  269. trace.
  270. RDR_FILE_SYSTEM (0x27)
  271. If you see RxExceptionFilter on the stack then the 2nd and 3rd parameters are the
  272. exception record and context record. Do a .cxr on the 3rd parameter and then kb to
  273. obtain a more informative stack trace.
  274. The high 16 bits of the first parameter is the RDBSS bugcheck code, which is defined
  275. as follows:
  276. RDBSS_BUG_CHECK_CACHESUP = 0xca550000,
  277. RDBSS_BUG_CHECK_CLEANUP = 0xc1ee0000,
  278. RDBSS_BUG_CHECK_CLOSE = 0xc10e0000,
  279. RDBSS_BUG_CHECK_NTEXCEPT = 0xbaad0000,
  280. % Further the mapping between each of the above RDBSS bugcheck codes and the
  281. % corresponding files (all in ...\base\fs\rdr2\rdbss directory) is as follows -
  282. % RDBSS_BUG_CHECK_CACHESUP ===> cachesup.c
  283. % RDBSS_BUG_CHECK_CLEANUP ====> cleanup.c
  284. % RDBSS_BUG_CHECK_CLOSE =======> close.c
  285. % RDBSS_BUG_CHECK_NTEXCEPT ====> ntexcept.c
  286. CORRUPT_ACCESS_TOKEN (0x28)
  287. SECURITY_SYSTEM (0x29)
  288. INCONSISTENT_IRP (0x2A)
  289. PARAMETERS
  290. 1 - Address of the IRP that was found to be inconsistent
  291. DESCRIPTION
  292. An IRP was encountered that was in an inconsistent state; i.e., some field
  293. or fields of the IRP were inconsistent w/the remaining state of the IRP.
  294. An example would be an IRP that was being completed, but was still marked
  295. as being queued to a driver's device queue. This bugcheck code is not
  296. currently being used in the system, but exists for debugging purposes.
  297. PANIC_STACK_SWITCH (0x2B)
  298. PARAMETERS
  299. 1 - Trap Frame
  300. DESCRIPTION
  301. This error indicates that the kernel mode stack was overrun. This normally
  302. occurs when a kernel-mode driver uses too much stack space. It can also
  303. occur when serious data corruption occurs in the kernel.
  304. PORT_DRIVER_INTERNAL (0x2C)
  305. SCSI_DISK_DRIVER_INTERNAL (0x2D)
  306. DATA_BUS_ERROR (0x2E)
  307. This bugcheck is normally caused by a parity error in the system memory.
  308. PARAMETERS
  309. 1 - Virtual address that caused the fault
  310. 2 - Physical address that caused the fault.
  311. 3 - Processor status register (PSR)
  312. 4 - Faulting instruction register (FIR)
  313. DESCRIPTION
  314. This error can also be caused by a driver accessing a bad virtual
  315. address whose backing physical address does not exist.
  316. INSTRUCTION_BUS_ERROR (0x2F)
  317. SET_OF_INVALID_CONTEXT (0x30)
  318. Attempt to set the stack pointer in the trap frame to a lower value than
  319. the current stack pointer value. This would cause the kernel run with a
  320. stack pointer pointing to stack which is no longer valid.
  321. PARAMETERS
  322. 1 - New stack pointer
  323. 2 - Old stack pointer
  324. 3 - TrapFrame address
  325. 4 - 0
  326. PHASE0_INITIALIZATION_FAILED (0x31)
  327. System init failed early on. A debugger is required to analyze this.
  328. PHASE1_INITIALIZATION_FAILED (0x32)
  329. PARAMETERS
  330. 1 - NT status code that describes why the system initialization failed.
  331. 2 - (reserved)
  332. % 2 - Indicates location within init.c where phase 1 initialization failure occurred
  333. UNEXPECTED_INITIALIZATION_CALL (0x33)
  334. CACHE_MANAGER (0x34)
  335. See the comment for FAT_FILE_SYSTEM (0x23)
  336. NO_MORE_IRP_STACK_LOCATIONS (0x35)
  337. PARAMETERS
  338. 1 - Address of the IRP
  339. DESCRIPTION
  340. A higher level driver has attempted to call a lower level driver through
  341. the IoCallDriver() interface, but there are no more stack locations in the
  342. packet, hence, the lower level driver would not be able to access its
  343. parameters, as there are no parameters for it. This is a disasterous
  344. situation, since the higher level driver "thinks" it has filled in the
  345. parameters for the lower level driver (something it MUST do before it calls
  346. it), but since there is no stack location for the latter driver, the former
  347. has written off of the end of the packet. This means that some other memory
  348. has probably been trashed at this point.
  349. DEVICE_REFERENCE_COUNT_NOT_ZERO (0x36)
  350. PARAMETERS
  351. 1 - Address of the device object
  352. DESCRIPTION
  353. A device driver has attempted to delete one of its device objects from the
  354. system but the reference count for that object was non-zero, meaning that
  355. there are still outstanding references to the device. (The reference count
  356. indicates the number of reasons why this device object cannot be deleted.)
  357. This is a bug in the calling device driver.
  358. FLOPPY_INTERNAL_ERROR (0x37)
  359. SERIAL_DRIVER_INTERNAL (0x38)
  360. SYSTEM_EXIT_OWNED_MUTEX (0x39)
  361. SYSTEM_UNWIND_PREVIOUS_USER (0x3A)
  362. SYSTEM_SERVICE_EXCEPTION (0x3B)
  363. INTERRUPT_UNWIND_ATTEMPTED (0x3C)
  364. INTERRUPT_EXCEPTION_NOT_HANDLED (0x3D)
  365. MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED (0x3E)
  366. The system has multiple processors, but they are asymmetric in relation
  367. to one another. In order to be symmetric all processors must be of
  368. the same type and level. For example, trying to mix a Pentium level
  369. processor with an 80486 would cause this bugcheck.
  370. NO_MORE_SYSTEM_PTES (0x3F)
  371. PARAMETERS
  372. 1 - PTE Type (0 - system expansion, 1 nonpaged pool expansion)
  373. 2 - Requested size
  374. 3 - Total free system PTEs
  375. 4 - Total system PTEs
  376. DESCRIPTION
  377. No System PTEs left. Usually caused by a driver not cleaning up
  378. properly. If kernel debugger available get stack trace and
  379. "!sysptes 3".
  380. Set HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes
  381. to a DWORD 1 value and reboot. Then the system will save stack traces
  382. so the guilty driver can be identified. There is no other way to find out
  383. which driver is neglecting to clean up the I/Os.
  384. A bugcheck DRIVER_USED_EXCESSIVE_PTES will then occur if the system runs out of
  385. PTEs again and the offending driver's name will be printed.
  386. TARGET_MDL_TOO_SMALL (0x40)
  387. A driver has called the IoBuildPartialMdl() function and passed it an MDL
  388. to map part of a source MDL, but the target MDL is not large enough to map
  389. the entire range of addresses requested. This is a driver bug. The source
  390. and target MDLs, as well as the address range length to be mapped are the
  391. arguments to the IoBuildPartialMdl() function, i.e.;
  392. IoBuildPartialMdl(
  393. IN PMDL SourceMdl,
  394. IN OUT PMDL TargetMdl,
  395. IN PVOID VirtualAddress,
  396. IN ULONG Length
  397. )
  398. MUST_SUCCEED_POOL_EMPTY (0x41)
  399. PARAMETERS
  400. 1 - size of the request that could not be satisfied
  401. 2 - number of pages used of nonpaged pool
  402. 3 - number of > PAGE_SIZE requests from nonpaged pool
  403. 4 - number of pages available
  404. DESCRIPTION
  405. No component should ever ask for must-succeed pool as if there is none left,
  406. the system crashes. Instead, components should ask for normal pool and
  407. gracefully handle the scenario where the pool is temporarily empty. This
  408. bugcheck definitely reveals a bug in the caller (use kb to identify the caller).
  409. In addition, the fact that the pool is empty may be either a transient condition
  410. or possibly a leak in another component (distinguish between the 2 cases by
  411. following the directions below).
  412. Type kb to show the calling stack.
  413. Type !vm 1 to display total pool usage.
  414. Then type !poolused 2 to display per-tag nonpaged pool usage.
  415. Then type !poolused 4 to display per-tag paged pool usage.
  416. The crash should be looked at by the tag owner that is consuming the most pool.
  417. ATDISK_DRIVER_INTERNAL (0x42)
  418. NO_SUCH_PARTITION (0x43)
  419. MULTIPLE_IRP_COMPLETE_REQUESTS (0x44)
  420. PARAMETERS
  421. 1 - Address of the IRP
  422. DESCRIPTION
  423. A driver has requested that an IRP be completed (IoCompleteRequest()), but
  424. the packet has already been completed. This is a tough bug to find because
  425. the easiest case, a driver actually attempted to complete its own packet
  426. twice, is generally not what happened. Rather, two separate drivers each
  427. believe that they own the packet, and each attempts to complete it. The
  428. first actually works, and the second fails. Tracking down which drivers
  429. in the system actually did this is difficult, generally because the trails
  430. of the first driver have been covered by the second. However, the driver
  431. stack for the current request can be found by examining the DeviceObject
  432. fields in each of the stack locations.
  433. INSUFFICIENT_SYSTEM_MAP_REGS (0x45)
  434. DEREF_UNKNOWN_LOGON_SESSION (0x46)
  435. REF_UNKNOWN_LOGON_SESSION (0x47)
  436. CANCEL_STATE_IN_COMPLETED_IRP (0x48)
  437. PARAMETERS
  438. 1 - Pointer to the IRP
  439. 2 - Cancel routine set by the driver.
  440. DESCRIPTION
  441. This bugcheck indicates that an I/O Request Packet (IRP) that is to be
  442. cancelled, has a cancel routine specified in it -- meaning that the packet
  443. is in a state in which the packet can be cancelled -- however, the packet
  444. no longer belongs to a driver, as it has entered I/O completion. This is
  445. either a driver bug, or more than one driver is accessing the same packet,
  446. which is not likely and much more difficult to find. The cancel routine
  447. parameter will provide a clue as to which driver or stack is the culprit.
  448. PAGE_FAULT_WITH_INTERRUPTS_OFF (0x49)
  449. IRQL_GT_ZERO_AT_SYSTEM_SERVICE (0x4A)
  450. Returning to usermode from a system call at an IRQL > PASSIVE_LEVEL.
  451. PARAMETERS
  452. 1 - Address of system function (system call routine)
  453. 2 - Current IRQL
  454. 3 - 0
  455. 4 - 0
  456. STREAMS_INTERNAL_ERROR (0x4B)
  457. FATAL_UNHANDLED_HARD_ERROR (0x4C)
  458. If a hard error occurs during system booting before windows is up, and
  459. the hard error is a real error, the system will blue screen crash.
  460. % Note: This will not actually appear as bug check 0x0000004C on
  461. % the blue screen or in the debugger. Bugcheck.c shifts the parameters
  462. % left, and replaces the bug check code with the exception code.
  463. % So this will appear as bug check "code" 0x00000218, 0x0000021A, and
  464. % so forth.
  465. Some common cases are:
  466. x218 - This means a necessary registry hive file could not be
  467. loaded. The obvious reason is if it is corrupt or missing.
  468. In this case, either the Emergency Repair Disk or a
  469. reinstall is required.
  470. Some less obvious reasons are that the driver has corrupted
  471. the registry data while loading into memory, or the memory
  472. where the registry file was loaded is not actually memory.
  473. x21a - This means that either winlogon, or csrss (windows) died
  474. unexpectedly. The exit code tells more information. Usually
  475. it is c0000005 meaning that an unhandled exception crashed
  476. either of these processes.
  477. x221 - This means that a driver is corrupt, or a system DLL was
  478. detected to be corrupt.
  479. %
  480. % We do our best to integrity check
  481. % drivers and important system DLLs, and if they are corrupt,
  482. % the blue screen displays the name of the corrupt file.
  483. % This prevents crashes from occuring when we stumble into the
  484. % corruption later.
  485. Safeboot or boot an alternate OS (or reinstall)
  486. and then make sure the on disk file that is listed as bad
  487. matches the version on CD and replace if necessary. In some
  488. cases, random corruption can mean that there is a hardware
  489. problem in the I/O path to the file.
  490. NO_PAGES_AVAILABLE (0x4D)
  491. PARAMETERS
  492. 1 - Total number of dirty pages
  493. 2 - Number of dirty pages destined for the pagefile(s).
  494. 3 - Internal flags.
  495. 4 - Most recent modified write error status.
  496. DESCRIPTION
  497. No free pages available to continue operations.
  498. If kernel debugger available "!vm 3".
  499. This bugcheck can occur for the following reasons:
  500. 1. A driver has blocked, deadlocking the modified or mapped
  501. page writers. Examples of this include mutex deadlocks or
  502. accesses to paged out memory in filesystem drivers, filter
  503. drivers, etc. This indicates a driver bug.
  504. If parameter 1 or 2 is large, then this is a possibility. Type
  505. "!vm 3" in the kernel debugger.
  506. 2. The storage driver(s) are not processing requests. Examples
  507. of this are stranded queues, non-responding drives, etc. This
  508. indicates a driver bug.
  509. If parameter 1 or 2 is large, then this is a possibility. Type
  510. "!process 0 7" in the kernel debugger.
  511. 3. Not enough pool is available for the storage stack to write out
  512. modified pages. This indicates a driver bug.
  513. If parameter 3 is small, then this is a possibility. Type
  514. "!vm" and "!poolused 2" in the kernel debugger.
  515. 4. A high priority realtime thread has starved the balance set
  516. manager from trimming pages and/or starved the modified writer
  517. from writing them out. This indicates a bug in the component
  518. that created this thread.
  519. This one is hard to determine, try "!ready"
  520. 5. All the processes have been trimmed to their minimums and all
  521. modified pages written, but still no memory is available. The
  522. freed memory must be stuck in transition pages with non-zero
  523. reference counts - thus they cannot be put on the freelist.
  524. A driver is neglecting to unlock the pages preventing the
  525. reference counts from going to zero which would free the pages.
  526. This may be due to transfers that never finish and the driver
  527. never aborts or other driver bugs.
  528. If parameter 4 is large, then this is a possibility. But it
  529. is very hard to find the driver. Try "!process 0 1" and look
  530. for any that have a lot of locked pages.
  531. If the problem cannot be found, then try booting with /DEBUG and a kernel
  532. debugger attached, so if it reproduces, a debug session can be initiated
  533. to identify the cause.
  534. PFN_LIST_CORRUPT (0x4E)
  535. PARAMETERS
  536. 1 -
  537. VALUES:
  538. 1 : A list head was corrupt
  539. 2 - ListHead value which was corrupt
  540. 3 - number of pages available
  541. 4 - 0
  542. 2 : A list entry was corrupt
  543. 2 - entry in list being removed
  544. 3 - highest physical page number
  545. 4 - reference count of entry being removed
  546. 7 : A driver has unlocked a page more times than it locked it
  547. 2 - page frame number
  548. 3 - current share count
  549. 4 - 0
  550. 0x8F : The free or zeroed page listhead is corrupt
  551. 2 - new page
  552. 3 - old page
  553. 4 - 0
  554. 0x99 : A PTE or PFN is corrupt
  555. 2 - page frame number
  556. 3 - current page state
  557. 4 - 0
  558. END_VALUES
  559. DESCRIPTION
  560. Typically caused by drivers passing bad memory descriptor lists (ie: calling
  561. MmUnlockPages twice with the same list, etc). If a kernel debugger is
  562. available get the stack trace.
  563. NDIS_INTERNAL_ERROR (0x4F)
  564. PAGE_FAULT_IN_NONPAGED_AREA (0x50)
  565. PARAMETERS
  566. 1 - memory referenced.
  567. 2 - value 0 = read operation, 1 = write operation.
  568. 3 - If non-zero, the instruction address which referenced the bad memory
  569. address.
  570. 4 - (reserved)
  571. % 4 - Mm internal code.
  572. DESCRIPTION
  573. Invalid system memory was referenced. This cannot be protected by try-except,
  574. it must be protected by a Probe. Typically the address is just plain bad or it
  575. is pointing at freed memory.
  576. REGISTRY_ERROR (0x51)
  577. PARAMETERS
  578. 1 - (reserved)
  579. % 1 - value 1 (indicates where Windows bugchecked)
  580. 2 - (reserved)
  581. % 2 - value 2 (indicates where Windows bugchecked)
  582. 3 - depends on where Windows bugchecked, may be pointer to hive
  583. 4 - depends on where Windows bugchecked, may be return code of
  584. HvCheckHive if the hive is corrupt.
  585. DESCRIPTION
  586. Something has gone badly wrong with the registry. If a kernel debugger
  587. is available, get a stack trace. It can also indicate that the registry got
  588. an I/O error while trying to read one of its files, so it can be caused by
  589. hardware problems or filesystem corruption.
  590. It may occur due to a failure in a refresh operation, which is used only
  591. in by the security system, and then only when resource limits are encountered.
  592. MAILSLOT_FILE_SYSTEM (0x52)
  593. NO_BOOT_DEVICE (0x53)
  594. LM_SERVER_INTERNAL_ERROR (0x54)
  595. DATA_COHERENCY_EXCEPTION (0x55)
  596. INSTRUCTION_COHERENCY_EXCEPTION (0x56)
  597. XNS_INTERNAL_ERROR (0x57)
  598. FTDISK_INTERNAL_ERROR (0x58)
  599. The system was booted from a revived primary partition so
  600. the hives say the mirror is ok, when in fact it is not.
  601. The "real" image of the hives are on the shadow.
  602. The user must boot from the shadow.
  603. PINBALL_FILE_SYSTEM (0x59)
  604. See the comment for FAT_FILE_SYSTEM (0x23)
  605. CRITICAL_SERVICE_FAILED (0x5A)
  606. SET_ENV_VAR_FAILED (0x5B)
  607. HAL_INITIALIZATION_FAILED (0x5C)
  608. UNSUPPORTED_PROCESSOR (0x5D)
  609. 386 - System failed because the processor is only a 386 or
  610. compatible. The system requires a Pentium (or higher) compatible processor.
  611. OBJECT_INITIALIZATION_FAILED (0x5E)
  612. SECURITY_INITIALIZATION_FAILED (0x5F)
  613. PROCESS_INITIALIZATION_FAILED (0x60)
  614. HAL1_INITIALIZATION_FAILED (0x61)
  615. OBJECT1_INITIALIZATION_FAILED (0x62)
  616. SECURITY1_INITIALIZATION_FAILED (0x63)
  617. SYMBOLIC_INITIALIZATION_FAILED (0x64)
  618. MEMORY1_INITIALIZATION_FAILED (0x65)
  619. CACHE_INITIALIZATION_FAILED (0x66)
  620. CONFIG_INITIALIZATION_FAILED (0x67)
  621. PARAMETERS
  622. 1 - (reserved)
  623. % 1 - indicates location in ntos\config\cmsysini that failed
  624. 2 - location selector
  625. 3 - NT status code
  626. DESCRIPTION
  627. This means the registry couldn't allocate the pool needed to contain the
  628. registry files. This should never happen, since it is early enough in
  629. system initialization that there is always plenty of paged pool available.
  630. FILE_INITIALIZATION_FAILED (0x68)
  631. IO1_INITIALIZATION_FAILED (0x69)
  632. Initialization of the I/O system failed for some reason. There is
  633. very little information available. In general, setup really made
  634. some bad decisions about the installation of the system, or the user has
  635. reconfigured the system.
  636. LPC_INITIALIZATION_FAILED (0x6A)
  637. PROCESS1_INITIALIZATION_FAILED (0x6B)
  638. PARAMETERS
  639. 1 - Indicates the NT status code that caused the failure.
  640. 2 - (reserved)
  641. % 2 - Indicates the location in psinit.c where the failure
  642. % was detected.
  643. REFMON_INITIALIZATION_FAILED (0x6C)
  644. SESSION1_INITIALIZATION_FAILED (0x6D)
  645. 1 - Indicates the NT status code that caused the failure.
  646. DESCRIPTION
  647. The bugcheck code (SESSION1 - SESSION5) indicates the point during
  648. initialization when the failure was detected.
  649. %
  650. % The session number indicates the location in ntos\init\init.c.
  651. SESSION2_INITIALIZATION_FAILED (0x6E)
  652. PARAMETERS
  653. 1 - Indicates the NT status code that tripped Windows into thinking
  654. that initialization failed.
  655. DESCRIPTION
  656. The bugcheck code (SESSION1 - SESSION5) indicates the point during
  657. initialization when the failure was detected.
  658. %
  659. % The session number indicates the location in ntos\init\init.c.
  660. SESSION3_INITIALIZATION_FAILED (0x6F)
  661. PARAMETERS
  662. 1 - Indicates the NT status code that tripped Windows into thinking
  663. that initialization failed.
  664. DESCRIPTION
  665. The bugcheck code (SESSION1 - SESSION5) indicates the point during
  666. initialization when the failure was detected.
  667. %
  668. % The session number indicates the location in ntos\init\init.c.
  669. SESSION4_INITIALIZATION_FAILED (0x70)
  670. PARAMETERS
  671. 1 - Indicates the NT status code that tripped Windows into thinking
  672. that initialization failed.
  673. DESCRIPTION
  674. The bugcheck code (SESSION1 - SESSION5) indicates the point during
  675. initialization when the failure was detected.
  676. %
  677. % The session number indicates the location in ntos\init\init.c.
  678. SESSION5_INITIALIZATION_FAILED (0x71)
  679. PARAMETERS
  680. 1 - Indicates the NT status code that tripped Windows into thinking
  681. that initialization failed.
  682. DESCRIPTION
  683. The bugcheck code (SESSION1 - SESSION5) indicates the point during
  684. initialization when the failure was detected.
  685. %
  686. % The session number indicates the location in ntos\init\init.c.
  687. ASSIGN_DRIVE_LETTERS_FAILED (0x72)
  688. CONFIG_LIST_FAILED (0x73)
  689. Indicates that one of the core system hives cannot be linked in the
  690. registry tree. The hive is valid, it was loaded OK. Examine the 2nd
  691. bugcheck argument to see why the hive could not be linked in the
  692. registry tree.
  693. PARAMETERS
  694. 1 - 1
  695. 2 - Indicates the NT status code that tripped Windows into
  696. thinking that it had failed to load the hive.
  697. 3 - Index of hive in hivelist
  698. 4 - Pointer to UNICODE_STRING containing filename of hive
  699. DESCRIPTION
  700. This can be either SAM, SECURITY, SOFTWARE or DEFAULT. One common reason
  701. for this to happen is if you are out of disk space on the system drive
  702. (in which case param 2 is 0xC000017D - STATUS_NO_LOG_SPACE) or an attempt
  703. to allocate pool has failed (in which case param 2 is 0xC000009A -
  704. STATUS_INSUFFICIENT_RESOURCES). Other status codes must be individually
  705. investigated.
  706. BAD_SYSTEM_CONFIG_INFO (0x74)
  707. Can indicate that the SYSTEM hive loaded by the osloader/NTLDR
  708. was corrupt. This is unlikely, since the osloader will check
  709. a hive to make sure it isn't corrupt after loading it.
  710. It can also indicate that some critical registry keys and values
  711. are not present. (i.e. somebody used regedt32 to delete something
  712. that they shouldn't have) Booting from LastKnownGood may fix
  713. the problem, but if someone is persistent enough in mucking with
  714. the registry they will need to reinstall or use the Emergency
  715. Repair Disk.
  716. PARAMETERS
  717. 1 - (reserved)
  718. % 1 - identifies the function
  719. 2 - (reserved)
  720. % 2 - identifies the line inside the function
  721. 3 - (reserved)
  722. % 3 - other info
  723. 4 - usually the NT status code.
  724. CANNOT_WRITE_CONFIGURATION (0x75)
  725. This will result if the SYSTEM hive file cannot be converted to a
  726. mapped file. This usually happens if the system is out of pool and
  727. we cannot reopen the hive.
  728. PARAMETERS
  729. 1 - 1
  730. 2 - Indicates the NT status code that tripped Windows into
  731. thinking that it had failed to convert the hive.
  732. DESCRIPTION
  733. Normally you shouldn't see this as the conversion happens at early
  734. during system initialization, so enough pool should be available.
  735. PROCESS_HAS_LOCKED_PAGES (0x76)
  736. PARAMETERS
  737. 1 - 0
  738. 2 - process address
  739. 3 - number of locked pages
  740. 4 - pointer to driver stacks (if enabled) or 0 if not.
  741. DESCRIPTION
  742. Caused by a driver not cleaning up completely after an I/O. Set
  743. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackLockedPages
  744. to a DWORD 1 value and reboot. Then the system will save stack traces
  745. so the guilty driver can be identified. There is no other way to find out
  746. which driver is neglecting to clean up the I/Os. When you enable this flag,
  747. if the driver commits the error again you will see a different
  748. bugcheck - DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS (0xCB) - which can identify the
  749. offending driver(s).
  750. KERNEL_STACK_INPAGE_ERROR (0x77)
  751. PARAMETERS
  752. 1 - status code
  753. 2 - i/o status code
  754. 3 - page file number
  755. 4 - offset into page file
  756. 1 - status code
  757. VALUES:
  758. 0 : (page was retrieved from page cache)
  759. 2 - value found in stack where signature should be
  760. 3 - 0
  761. 4 - address of signature on kernel stack
  762. 1 : (page was retrieved from disk)
  763. 2 - value found in stack where signature should be
  764. 3 - 0
  765. 4 - address of signature on kernel stack
  766. 2 : (page was retrieved from disk, storage stack returned SUCCESS,
  767. but the Status.Information != PAGE_SIZE)
  768. 2 - value found in stack where signature should be
  769. 3 - 0
  770. 4 - address of signature on kernel stack
  771. END_VALUES
  772. DESCRIPTION
  773. The requested page of kernel data could not be read in. Caused by
  774. bad block in paging file or disk controller error.
  775. In the case when the first and second arguments are 0, the stack signature
  776. in the kernel stack was not found. Again, bad hardware.
  777. An I/O status of c000009c (STATUS_DEVICE_DATA_ERROR) or
  778. C000016AL (STATUS_DISK_OPERATION_FAILED) normally indicates
  779. the data could not be read from the disk due to a bad
  780. block. Upon reboot autocheck willl run and attempt to map out the bad
  781. sector. If the status is C0000185 (STATUS_IO_DEVICE_ERROR) and the paging
  782. file is on a SCSI disk device, then the cabling and termination should be
  783. checked. See the knowledge base article on SCSI termination.
  784. PHASE0_EXCEPTION (0x78)
  785. MISMATCHED_HAL (0x79)
  786. PARAMETERS
  787. 1 - type of mismatch
  788. VALUES:
  789. 1:
  790. The PRCB release levels mismatch. (something is out of date)
  791. 2 - Major PRCB level of ntoskrnl.exe
  792. 3 - Major PRCB level of hal.dll
  793. 2:
  794. The build types mismatch.
  795. 2 - Build type of ntoskrnl.exe
  796. 3 - Build type of hal.dll
  797. Build type
  798. 0 = Free multiprocessor enabled build
  799. 1 = Checked multiprocessor enabled build
  800. 2 = Free uniprocessor build
  801. 3:
  802. The loader (ntldr) and hal versions mismatch.
  803. 2 - Size of the loader parameter extension
  804. 3 - MajorVersion of the loader parameter extension
  805. 4 - MinorVersion of the loader parameter extension
  806. END_VALUES
  807. DESCRIPTION
  808. The HAL revision level and HAL configuration type does not match that
  809. of the kernel or the machine type. This would probably happen if the
  810. user has manually updated either ntoskrnl.exe or hal.dll and managed to
  811. get a conflict.
  812. You have an MP (multi-processor) Hal and a UP (uni-processor) Kernel,
  813. or the reverse.
  814. KERNEL_DATA_INPAGE_ERROR (0x7A)
  815. PARAMETERS
  816. 1 - lock type that was held (value 1,2,3, or PTE address)
  817. 2 - error status (normally i/o status code)
  818. 3 - current process (virtual address for lock type 3, or PTE)
  819. 4 - virtual address that could not be in-paged
  820. DESCRIPTION
  821. The requested page of kernel data could not be read in. Typically caused by
  822. a bad block in the paging file or disk controller error. Also see
  823. KERNEL_STACK_INPAGE_ERROR.
  824. If the error status is 0xC000000E, 0xC000009C, 0xC000009D or 0xC0000185,
  825. it means the disk subsystem has experienced a failure.
  826. %
  827. % ntmsd is the best alias to take care of these types of failures.
  828. If the error status is 0xC000009A, then it means the request failed because
  829. a filesystem failed to make forward progress.
  830. %
  831. % The filesystem alias is the right alias to look at these types of failures.
  832. INACCESSIBLE_BOOT_DEVICE (0x7B)
  833. PARAMETERS
  834. 1 - Pointer to the device object or Unicode string of ARC name
  835. DESCRIPTION
  836. During the initialization of the I/O system, it is possible that the driver
  837. for the boot device failed to initialize the device that the system is
  838. attempting to boot from, or it is possible for the file system that is
  839. supposed to read that device to either fail its initialization or to simply
  840. not recognize the data on the boot device as a file system structure that
  841. it recognizes. In the former case, the argument (#1) is the address of a
  842. Unicode string data structure that is the ARC name of the device from which
  843. the boot was being attempted. In the latter case, the argument (#1) is the
  844. address of the device object that could not be mounted.
  845. If this is the initial setup of the system, then this error can occur if
  846. the system was installed on an unsupported disk or SCSI controller. Note
  847. that some controllers are supported only by drivers which are in the Windows
  848. Driver Library (WDL) which requires the user to do a custom install. See
  849. the Windows Driver Library for more information.
  850. This error can also be caused by the installation of a new SCSI adapter or
  851. disk controller or repartitioning the disk with the system partition. If
  852. this is the case, on x86 systems the boot.ini file must be edited or on ARC
  853. systems setup must be run. See the "Advanced Server System Administrator's
  854. User Guide" for information on changing boot.ini.
  855. If the argument is a pointer to an ARC name string, then the format of the
  856. first two (and in this case only) longwords will be:
  857. USHORT Length;
  858. USHORT MaximumLength;
  859. PWSTR Buffer;
  860. That is, the first longword will contain something like 00800020 where 20
  861. is the actual length of the Unicode string, and the next longword will
  862. contain the address of buffer. This address will be in system space, so
  863. the high order bit will be set.
  864. If the argument is a pointer to a device object, then the format of the first
  865. word will be:
  866. USHORT Type;
  867. That is, the first word will contain a 0003, where the Type code will ALWAYS
  868. be 0003.
  869. Note that this makes it immediately obvious whether the argument is a pointer
  870. to an ARC name string or a device object, since a Unicode string can never
  871. have an odd number of bytes, and a device object will always have a Type
  872. code of 3.
  873. BUGCODE_NDIS_DRIVER (0x7C)
  874. This is the NDIS Driver Bugcheck for Windows Server 2003 and later.
  875. For Windows 2000 and Windows XP, see 0xD2, BUGCODE_ID_DRIVER.
  876. PARAMETERS
  877. 1 - NDIS BugCheck Code
  878. VALUES:
  879. 1 : Driver called NdisMAllocateSharedMemory at raised IRQL
  880. 2 - A pointer to Miniport block. !ndiskd.miniport on
  881. this pointer for more info.
  882. 3 - The length of the requested shared memory
  883. 4 - The current IRQL
  884. 2 : During a call to NdisMAllocateSharedMemory, NDIS detected
  885. that a previously allocated shared memory page has been
  886. corrupted.
  887. 2 - A pointer to Miniport block. !ndiskd.miniport on
  888. this pointer for more info.
  889. 3 - The shared memory page that was corrupted.
  890. 4 - A pointer to a NDIS_WRAPPER_CONTEXT that keeps
  891. track of shared memory allocations by the driver.
  892. 3 : A Driver called NdisMFreeSharedMemory(Async) with a shared
  893. memory pointer that has already been freed.
  894. 2 - A pointer to Miniport block. !ndiskd.miniport on
  895. this pointer for more info.
  896. 3 - The page that this shared was allocated from.
  897. 4 - The virtual address of the shared memory.
  898. 4 : [Only enabled on special instrumented NDIS.] AddDevice was
  899. called with a driver that is not on the list of drivers
  900. that are registered with NDIS.
  901. 2 - A pointer to NDIS_M_DRIVER_BLOCK.
  902. 3 - The driver object. (A pointer to DRIVER_OBJECT)
  903. 4 - Not used
  904. 5 : An Ethernet driver indicated receiving a packet using a
  905. packet descriptor that is currently in use by protocol
  906. stack. (Caught by checking stack packet location)
  907. 2 - A pointer to Miniport block. !ndiskd.miniport on
  908. this pointer for more info.
  909. 3 - The packet descriptor used by the driver. Use
  910. !ndiskd.pkt on this pointer for more info.
  911. % MICROSOFT INTERNAL: You can also use, on an x86,
  912. % dd (<pointer>-38). On IA-64, dd (<pointer>-68).
  913. 4 - A pointer to the packet array that contained this
  914. packet descriptor. (not much of a use)
  915. 6 : An Ethernet driver indicated receiving a packet using a
  916. packet descriptor that is currently in use by protocol
  917. stack. (caught by checking packet reference count)
  918. 2 - A pointer to Miniport block. !ndiskd.miniport on
  919. this pointer for more info.
  920. 3 - The packet descriptor used by the driver. Use
  921. !ndiskd.pkt on this pointer for more info.
  922. % MICROSOFT INTERNAL: You can also use, on an x86,
  923. % dd (<pointer>-38). On IA-64, dd (<pointer>-68).
  924. 4 - A pointer to the packet array that contained this
  925. packet descriptor. (not much of a use)
  926. 7 : A FDDI driver indicated receiving a packet using a packet
  927. descriptor that is currently in use by protocol stack.
  928. (caught by checking packet reference count)
  929. 2 - A pointer to Miniport block. !ndiskd.miniport on
  930. this pointer for more info.
  931. 3 - The packet descriptor used by the driver. Use
  932. !ndiskd.pkt on this pointer for more info.
  933. % MICROSOFT INTERNAL: You can also use, on an x86,
  934. % dd (<pointer>-38). On IA-64, dd (<pointer>-68).
  935. 4 - A pointer to the packet array that contained this
  936. packet descriptor. (not much of a use)
  937. 8 : A Miniport did not deregister its interrupt during the halt
  938. process.
  939. 2 - A pointer to Miniport block. !ndiskd.miniport on
  940. this pointer for more info.
  941. 3 - A pointer to NDIS_MINIPORT_INTERRUP.
  942. 4 - Not used.
  943. 9 : A Miniport halted without successfully canceling all its
  944. timers.
  945. 2 - A pointer to Miniport block. !ndiskd.miniport on
  946. this pointer for more info.
  947. 3 - A pointer to miniport's timer queue. type:
  948. NDIS_MINIPORT_TIMER.
  949. 4 - Not used.
  950. 0xA : A miniport driver is getting unloaded prematurely.
  951. 2 - A pointer to NDIS_M_DRIVER_BLOCK.
  952. 3 - The driver object. (A pointer to DRIVER_OBJECT).
  953. 4 - The ref count for the miniport driver.
  954. 0xB : A Miniport failed initialization without deregistering
  955. its interrupt.
  956. 2 - A pointer to Miniport block. !ndiskd.miniport on
  957. this pointer for more info.
  958. 3 - A pointer to NDIS_MINIPORT_INTERRUP.
  959. 4 - Not used.
  960. 0xC : A Miniport failed initialization without successfully
  961. canceling all its timers.
  962. 2 - A pointer to Miniport block. !ndiskd.miniport on
  963. this pointer for more info.
  964. 3 - A pointer to miniport's timer queue. type:
  965. NDIS_MINIPORT_TIMER.
  966. 4 - Not used.
  967. 0xD : A Miniport did not deregister its interrupt during the
  968. halt process. (halt called from initialize routine after
  969. miniport returned success from its initialize handler)
  970. 2 - A pointer to Miniport block. !ndiskd.miniport on
  971. this pointer for more info.
  972. 3 - A pointer to NDIS_MINIPORT_INTERRUP.
  973. 4 - Not used.
  974. 0xE : A Miniport halted without successfully canceling all its
  975. timers. (halt called from initialize routine after
  976. miniport returned success from its initialize handler)
  977. 2 - A pointer to Miniport block. !ndiskd.miniport on
  978. this pointer for more info.
  979. 3 - A pointer to miniport's timer queue. type:
  980. NDIS_MINIPORT_TIMER.
  981. 4 - Not used.
  982. 0xF : A Miniport driver is calling NdisMResetComplete without
  983. any pending reset request.
  984. 2 - A pointer to Miniport block. !ndiskd.miniport on
  985. this pointer for more info.
  986. 3 - Reset status.
  987. 4 - AddressingReset BOOLEAN. (not much of a use).
  988. 0x10 : After resuming from a low power state, a Miniport failed
  989. initialization without deregistering its interrupt.
  990. 2 - A pointer to Miniport block. !ndiskd.miniport on
  991. this pointer for more info.
  992. 3 - A pointer to NDIS_MINIPORT_INTERRUP.
  993. 4 - Not used.
  994. 0x11 : After resuming from a low power state, a Miniport failed
  995. initialization without successfully canceling all its
  996. timers.
  997. 2 - A pointer to Miniport block. !ndiskd.miniport on
  998. this pointer for more info.
  999. 3 - A pointer to miniport's timer queue. type:
  1000. NDIS_MINIPORT_TIMER.
  1001. 4 - Not used.
  1002. 0x12 : A miniport driver indicated receiving a packet using a
  1003. packet descriptor that is currently in use by protocol
  1004. stack. (caught by checking packet reference count)
  1005. 2 - A pointer to Miniport block. !ndiskd.miniport on
  1006. this pointer for more info.
  1007. 3 - The packet descriptor used by the driver. Use
  1008. !ndiskd.pkt on this pointer for more info.
  1009. % MICROSOFT INTERNAL: You can also use, on an x86,
  1010. % dd (<pointer>-38). On IA-64, dd (<pointer>-68).
  1011. 4 - A pointer to the packet array that contained this
  1012. packet descriptor. (not much of a use)
  1013. 0x13 : A Token-Ring miniport driver indicated receiving a
  1014. packet using a packet descriptor that is currently in
  1015. use by protocol stack. (caught by checking packet
  1016. reference count)
  1017. 2 - A pointer to Miniport block. !ndiskd.miniport on
  1018. this pointer for more info.
  1019. 3 - The packet descriptor used by the driver. Use
  1020. !ndiskd.pkt on this pointer for more info.
  1021. % MICROSOFT INTERNAL: You can also use, on an x86,
  1022. % dd (<pointer>-38). On IA-64, dd (<pointer>-68).
  1023. 4 - A pointer to the packet array that contained this
  1024. packet descriptor. (not much of a use)
  1025. END_VALUES
  1026. INSTALL_MORE_MEMORY (0x7D)
  1027. PARAMETERS
  1028. 1 - Number of physical pages found
  1029. 2 - Lowest physical page
  1030. 3 - Highest physical page
  1031. 4 - 0
  1032. DESCRIPTION
  1033. Not enough memory to boot Windows.
  1034. SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (0x7E)
  1035. PARAMETERS
  1036. 1 - The exception code that was not handled
  1037. VALUES
  1038. 0x80000002: (STATUS_DATATYPE_MISALIGNMENT) An unaligned data reference was encountered.
  1039. The trap frame will supply additional information.
  1040. 0x80000003: This means a hard coded breakpoint or assertion was hit, but this system was booted
  1041. /NODEBUG. This is not supposed to happen as developers should never have
  1042. hardcoded breakpoints in retail code, but ...
  1043. If this happens, make sure a debugger gets connected, and the
  1044. system is booted /DEBUG. This will let us see why this breakpoint is
  1045. happening.
  1046. END_VALUES
  1047. 2 - The address that the exception occurred at
  1048. 3 - Exception Record Address
  1049. 4 - Context Record Address
  1050. DESCRIPTION
  1051. This is a very common bugcheck. Usually the exception address pinpoints
  1052. the driver/function that caused the problem. Always note this address
  1053. as well as the link date of the driver/image that contains this address.
  1054. SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M (0x1000007E)
  1055. PARAMETERS
  1056. 1 - The exception code that was not handled
  1057. 2 - The address that the exception occurred at
  1058. 3 - Exception Record Address
  1059. 4 - Context Record Address
  1060. DESCRIPTION
  1061. This is a very common bugcheck. Usually the exception address pinpoints
  1062. the driver/function that caused the problem. Always note this address
  1063. as well as the link date of the driver/image that contains this address.
  1064. Some common problems are exception code 0x80000003. This means a hard
  1065. coded breakpoint or assertion was hit, but this system was booted
  1066. /NODEBUG. This is not supposed to happen as developers should never have
  1067. hardcoded breakpoints in retail code, but ...
  1068. If this happens, make sure a debugger gets connected, and the
  1069. system is booted /DEBUG. This will let us see why this breakpoint is
  1070. happening.
  1071. An exception code of 0x80000002 (STATUS_DATATYPE_MISALIGNMENT) indicates
  1072. that an unaligned data reference was encountered. The trap frame will
  1073. supply additional information.
  1074. UNEXPECTED_KERNEL_MODE_TRAP (0x7F)
  1075. This means a trap occurred in kernel mode, and it's a trap of a kind
  1076. that the kernel isn't allowed to have/catch (bound trap) or that
  1077. is always instant death (double fault). The first number in the
  1078. bugcheck parens is the number of the trap (8 = double fault, etc)
  1079. Consult an Intel x86 family manual to learn more about what these
  1080. traps are. Here is a *portion* of those codes:
  1081. PARAMETERS
  1082. 1 - x86 trap number
  1083. VALUES:
  1084. 0: EXCEPTION_DIVIDED_BY_ZERO
  1085. 1: EXCEPTION_DEBUG
  1086. 2: EXCEPTION_NMI
  1087. 3: EXCEPTION_INT3
  1088. 5: EXCEPTION_BOUND_CHECK
  1089. 6: EXCEPTION_INVALID_OPCODE
  1090. 7: EXCEPTION_NPX_NOT_AVAILABLE
  1091. 8: EXCEPTION_DOUBLE_FAULT
  1092. 9: EXCEPTION_NPX_OVERRUN
  1093. A: EXCEPTION_INVALID_TSS
  1094. B: EXCEPTION_SEGMENT_NOT_PRESENT
  1095. C: EXCEPTION_STACK_FAULT
  1096. D: EXCEPTION_GP_FAULT
  1097. F: EXCEPTION_RESERVED_TRAP
  1098. 10: EXCEPTION_NPX_ERROR
  1099. 11: EXCEPTION_ALIGNMENT_CHECK
  1100. END_VALUES
  1101. DESCRIPTION
  1102. If kv shows a taskGate
  1103. use .tss on the part before the colon, then kv.
  1104. Else if kv shows a trapframe
  1105. use .trap on that value
  1106. Else
  1107. .trap on the appropriate frame will show where the trap was taken
  1108. (on x86, this will be the ebp that goes with the procedure KiTrap)
  1109. Endif
  1110. kb will then show the corrected stack.
  1111. UNEXPECTED_KERNEL_MODE_TRAP_M (0x1000007F)
  1112. This means a trap occurred in kernel mode, and it's a trap of a kind
  1113. that the kernel isn't allowed to have/catch (bound trap) or that
  1114. is always instant death (double fault). The first number in the
  1115. bugcheck parens is the number of the trap (8 = double fault, etc)
  1116. Consult an Intel x86 family manual to learn more about what these
  1117. traps are. Here is a *portion* of those codes:
  1118. PARAMETERS
  1119. 1 - x86 trap number
  1120. VALUES:
  1121. 0: EXCEPTION_DIVIDED_BY_ZERO
  1122. 1: EXCEPTION_DEBUG
  1123. 2: EXCEPTION_NMI
  1124. 3: EXCEPTION_INT3
  1125. 5: EXCEPTION_BOUND_CHECK
  1126. 6: EXCEPTION_INVALID_OPCODE
  1127. 7: EXCEPTION_NPX_NOT_AVAILABLE
  1128. 8: EXCEPTION_DOUBLE_FAULT
  1129. 9: EXCEPTION_NPX_OVERRUN
  1130. A: EXCEPTION_INVALID_TSS
  1131. B: EXCEPTION_SEGMENT_NOT_PRESENT
  1132. C: EXCEPTION_STACK_FAULT
  1133. D: EXCEPTION_GP_FAULT
  1134. F: EXCEPTION_RESERVED_TRAP
  1135. 10: EXCEPTION_NPX_ERROR
  1136. 11: EXCEPTION_ALIGNMENT_CHECK
  1137. END_VALUES
  1138. DESCRIPTION
  1139. If kv shows a taskGate
  1140. use .tss on the part before the colon, then kv.
  1141. Else if kv shows a trapframe
  1142. use .trap on that value
  1143. Else
  1144. .trap on the appropriate frame will show where the trap was taken
  1145. (on x86, this will be the ebp that goes with the procedure KiTrap)
  1146. Endif
  1147. kb will then show the corrected stack.
  1148. NMI_HARDWARE_FAILURE (0x80)
  1149. This is typically due to a hardware malfunction. The hardware supplier should
  1150. be called.
  1151. SPIN_LOCK_INIT_FAILURE (0x81)
  1152. DFS_FILE_SYSTEM (0x82)
  1153. SETUP_FAILURE (0x85)
  1154. (NOTE: Textmode setup no longer uses bugchecks to bail out of serious
  1155. error conditions. Therefore, you will never encounter a bugcheck 0x85.
  1156. All bugchecks have been replaced with friendlier and (where possible)
  1157. more descriptive error messages. Some of the former bugchecks, however,
  1158. have simply been replaced by our own bugcheck screen, and the codes for
  1159. these error conditions are the same as before. These are documented below.)
  1160. The first extended bugcheck field is a code indicating what the
  1161. problem is, and the other fields are used differently depending on
  1162. that value.
  1163. PARAMETERS
  1164. 1 -
  1165. VALUES:
  1166. 0: The oem hal font is not a valid .fon format file, and so setup
  1167. is unable to display text.
  1168. This indicates that vgaxxx.fon on the boot floppy or CD-ROM
  1169. is damaged.
  1170. 1: Video initialization failed. NO LONGER A BUGCHECK CODE.
  1171. This error now has its own error screen, and the user is only
  1172. presented with the two relevant parameters detailed below.
  1173. This may indicate that the disk containing vga.sys
  1174. (or other video driver appropriate to the machine)
  1175. is damaged or that machine has video hardware that
  1176. Windows cannot communicate with.
  1177. 3 - Status code from NT API call, if appropriate.
  1178. 2 - What failed:
  1179. VALUES:
  1180. 0 : NtCreateFile of \device\video0
  1181. 1 : IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES
  1182. 2 : IOCTL_VIDEO_QUERY_AVAIL_MODES
  1183. 3: Desired video mode not supported. This is indicative of
  1184. an internal setup error.
  1185. 4: IOCTL_VIDEO_SET_CURRENT_MODE (unable to set video mode)
  1186. 5: IOCTL_VIDEO_MAP_VIDEO_MEMORY
  1187. 6: IOCTL_VIDEO_LOAD_AND_SET_FONT
  1188. END_VALUES
  1189. 2: Out of memory. NO LONGER A BUGCHECK CODE.
  1190. This error now uses a more friendly error screen that works
  1191. regardless of how far along in setup Windows is.
  1192. 3: Keyboard initialization failed. NO LONGER A BUGCHECK CODE.
  1193. There are now 2 error screens for the two different possible errors
  1194. that can occur here.
  1195. This may indicate that the disk containing the keyboard driver
  1196. (i8042prt.sys or kbdclass.sys) is damaged, or that the machine has
  1197. keyboard hardware Windows cannot communicate with.
  1198. It may also mean that the keyboard layout dll could not be loaded.
  1199. 2 - What failed:
  1200. VALUES:
  1201. 0: NtCreateFile of \device\KeyboardClass0 failed.
  1202. "Setup did not find a keyboard connected to your computer."
  1203. 1: Unable to load keyboard layout dll.
  1204. "Setup could not load the keyboard layout file <filename>."
  1205. Indicates that the cd or floppy is missing a file (kbdus.dll
  1206. for us release, other layout dlls for localized ones).
  1207. END_VALUES
  1208. 4: Setup was unable to resolve the ARC device pathname of
  1209. the device from which setup was started. This is an internal
  1210. Setup error.
  1211. 5: Partitioning sanity check failed. This indicates a bug in
  1212. a disk driver. The parameters are meaningful only to the setup
  1213. group.
  1214. END_VALUES
  1215. MBR_CHECKSUM_MISMATCH (0x8B)
  1216. This message occurs during the boot process when the MBR checksum the system
  1217. calculates does not match the checksum passed in by the loader. This is usually
  1218. an indication of a virus. There are many forms of viruses and not all can be
  1219. detected. The newer ones usually can only be detected by a virus scanner that
  1220. has recently been upgraded. Boot a write-protected disk containing a virus
  1221. scanner and attempt to clean out the infection.
  1222. PARAMETERS
  1223. 1 - Disk Signature from MBR.
  1224. 2 - MBR checksum calculated by osloader.
  1225. 3 - MBR checksum calculated by system.
  1226. KERNEL_MODE_EXCEPTION_NOT_HANDLED (0x8E)
  1227. PARAMETERS
  1228. 1 - The exception code that was not handled
  1229. 2 - The address that the exception occurred at
  1230. 3 - Trap Frame
  1231. DESCRIPTION
  1232. This is a very common bugcheck. Usually the exception address pinpoints
  1233. the driver/function that caused the problem. Always note this address
  1234. as well as the link date of the driver/image that contains this address.
  1235. Some common problems are exception code 0x80000003. This means a hard
  1236. coded breakpoint or assertion was hit, but this system was booted
  1237. /NODEBUG. This is not supposed to happen as developers should never have
  1238. hardcoded breakpoints in retail code, but ...
  1239. If this happens, make sure a debugger gets connected, and the
  1240. system is booted /DEBUG. This will let us see why this breakpoint is
  1241. happening.
  1242. An exception code of 0x80000002 (STATUS_DATATYPE_MISALIGNMENT) indicates
  1243. that an unaligned data reference was encountered. The trap frame will
  1244. supply additional information.
  1245. KERNEL_MODE_EXCEPTION_NOT_HANDLED_M (0x1000008E)
  1246. PARAMETERS
  1247. 1 - The exception code that was not handled
  1248. 2 - The address that the exception occurred at
  1249. 3 - Trap Frame
  1250. DESCRIPTION
  1251. This is a very common bugcheck. Usually the exception address pinpoints
  1252. the driver/function that caused the problem. Always note this address
  1253. as well as the link date of the driver/image that contains this address.
  1254. Some common problems are exception code 0x80000003. This means a hard
  1255. coded breakpoint or assertion was hit, but this system was booted
  1256. /NODEBUG. This is not supposed to happen as developers should never have
  1257. hardcoded breakpoints in retail code, but ...
  1258. If this happens, make sure a debugger gets connected, and the
  1259. system is booted /DEBUG. This will let us see why this breakpoint is
  1260. happening.
  1261. An exception code of 0x80000002 (STATUS_DATATYPE_MISALIGNMENT) indicates
  1262. that an unaligned data reference was encountered. The trap frame will
  1263. supply additional information.
  1264. PP0_INITIALIZATION_FAILED (0x8F)
  1265. This message occurs if phase 0 initialization of the kernel-mode Plug and
  1266. Play Manager failed.
  1267. PP1_INITIALIZATION_FAILED (0x90)
  1268. This message occurs if phase 1 initialization of the kernel-mode Plug and
  1269. Play Manager failed. This is where most of the initialization is done,
  1270. including setting up the environment (registry, etc.) for drivers to
  1271. subsequently call during I/O init.
  1272. UP_DRIVER_ON_MP_SYSTEM (0x92)
  1273. This message occurs if a UNIPROCESSOR only driver is loaded on a MultiProcessor
  1274. system with more than one active processor.
  1275. PARAMETERS
  1276. 1 - The Base address of the driver.
  1277. INVALID_KERNEL_HANDLE (0x93)
  1278. This message occurs if kernel code (server, redirector, other driver, etc.)
  1279. attempts to close a handle that is not a valid handle.
  1280. PARAMETERS
  1281. 1 - The handle that NtClose was called with.
  1282. 2 -
  1283. VALUES
  1284. 0 : means a protected handle was closed.
  1285. 1 : means an invalid handle was closed.
  1286. END_VALUES
  1287. KERNEL_STACK_LOCKED_AT_EXIT (0x94)
  1288. This message occurs when a thread exits while its kernel stack is
  1289. marked as not swapable
  1290. INVALID_WORK_QUEUE_ITEM (0x96)
  1291. This message occurs when KeRemoveQueue removes a queue entry whose flink
  1292. or blink field is null. This is almost always called by code misusing
  1293. worker thread work items, but any queue misuse can cause this. The rule
  1294. is that an entry on a queue may only be inserted on the list once. When an
  1295. item is removed from a queue, it's flink field is set to NULL. This bugcheck
  1296. occurs when remove queue attempts to remove an entry, but the flink or blink
  1297. field is NULL. In order to debug this problem, you need to know the queue being
  1298. referenced.
  1299. In an attempt to help identify the guilty driver, this bugcheck assumes the
  1300. queue is a worker queue (ExWorkerQueue) and prints the worker routine as
  1301. parameter 4 below.
  1302. PARAMETERS
  1303. 1 - The address of the queue entry whose flink/blink field is NULL
  1304. 2 - The address of the queue being references. Usually this is one
  1305. of the ExWorkerQueues.
  1306. 3 - The base address of the ExWorkerQueue array. This will help determine
  1307. if the queue in question is an ExWorkerQueue and if so, the offset from
  1308. this parameter will isolate the queue.
  1309. 4 - If this is an ExWorkerQueue (which it usually is), this is the address
  1310. of the worker routine that would have been called if the work item was
  1311. valid. This can be used to isolate the driver that is misusing the work
  1312. queue.
  1313. BOUND_IMAGE_UNSUPPORTED (0x97)
  1314. END_OF_NT_EVALUATION_PERIOD (0x98)
  1315. Your Windows System is an evaluation unit with an expiration date. The trial
  1316. period is over.
  1317. PARAMETERS
  1318. 1 - The low order 32 bits of your installation date
  1319. 2 - The high order 32 bits of your installation date
  1320. 3 - The trial period in minutes
  1321. INVALID_REGION_OR_SEGMENT (0x99)
  1322. ExInitializeRegion or ExInterlockedExtendRegion was called with an invalid
  1323. set of parameters.
  1324. SYSTEM_LICENSE_VIOLATION (0x9A)
  1325. A violation of the software license agreement has occurred. This can be due to
  1326. either attempting to change the product type of an offline system, or an attempt
  1327. to change the trial period of an evaluation unit of Windows.
  1328. PARAMETERS
  1329. 1 - Violation type
  1330. VALUES:
  1331. 0 : means that offline product type changes were attempted
  1332. 2 - if 1, product should be LanmanNT or ServerNT. If 0, should be WinNT
  1333. 3 - partial serial number
  1334. 4 - first two characters of product type from product options.
  1335. 1 : means that offline changes to the nt evaluation unit time period
  1336. 2 - registered evaluation time from source 1
  1337. 3 - partial serial number
  1338. 4 - registered evaluation time from alternate source
  1339. 2 : means that the setup key could not be opened
  1340. 2 - status code associated with the open failure
  1341. 3 : The SetupType value from the setup key is missing so gui setup
  1342. mode could not be detected
  1343. 2 - status code associated with the key lookup failure
  1344. 4 : The SystemPrefix value from the setup key is missing
  1345. 2 - status code associated with the key lookup failure
  1346. 5 : means that offline changes were made to the number of licensed processors
  1347. 2 - see setup code
  1348. 3 - invalid value found in licensed processors
  1349. 4 - officially licensed number of processors
  1350. 6 : means that ProductOptions key could not be opened
  1351. 2 - status code associated with the open failure
  1352. 7 : means that ProductType value could not be read
  1353. 2 - status code associated with the read failure
  1354. 8 : means that Change Notify on ProductOptions failed
  1355. 2 - status code associated with the change notify failure
  1356. 9 : means that Change Notify on SystemPrefix failed
  1357. 2 - status code associated with the change notify failure
  1358. 0xA : An NTW system was converted to an NTS system
  1359. 0xB : Reference of setup key failed
  1360. 2 - status code associated with the change failure
  1361. 0xC : Reference of product options key failed
  1362. 2 - status code associated with the change failure
  1363. 0xD : Open of ProductOptions in worker thread failed
  1364. 2 - status code associated with the failure
  1365. 0xF : Open of setup key failed
  1366. 2 - status code associated with the failure
  1367. 0x10 : Failure occurred in the setup key worker thread
  1368. 2 - status code associated with the failure
  1369. 3 - 0 means set value failed, 1 means change notify failed
  1370. 0x11 : Failure occurred in the product options key worker thread
  1371. 2 - status code associated with the failure
  1372. 3 - 0 means set value failed, 1 means change notify failed
  1373. 0x12 : Could not open the LicenseInfoSuites key for the suite
  1374. 2 - status code associated with the failure
  1375. 0x13 : Could not query the LicenseInfoSuites key for the suite
  1376. 2 - status code associated with the failure
  1377. 0x14 : Could not allocate memory
  1378. 2 - size of memory alllocation
  1379. 0x15 : Could not re-set the ConcurrentLimit value for the suite key
  1380. 2 - status code associated with the failure
  1381. 0x16 : Could not open the license key for a suite product
  1382. 2 - status code associated with the failure
  1383. 0x17 : Could not re-set the ConcurrentLimit value for a suite product
  1384. 2 - status code associated with the failure
  1385. 0x18 : Could not start the change notify for the LicenseInfoSuites
  1386. 2 - status code associated with the open failure
  1387. 0x19 : A suite is running on a system that must be pdc
  1388. 0x20 : Failure occurred when enumerating the suites
  1389. 2 - status code associated with the failure
  1390. END_VALUES
  1391. UDFS_FILE_SYSTEM (0x9B)
  1392. % All file system bug checks have encoded in their first ULONG
  1393. % the source file and the line within the source file that generated
  1394. % the bugcheck. The high 16-bits contains a number to identify the
  1395. % file and low 16-bits is the source line within the file where
  1396. % the bug check call occurs. For example, 0x00020009 indicates
  1397. % that the UDF file system bugcheck occurred in source file #2 and
  1398. % line #9.
  1399. %
  1400. % The file system calls bug check in multiple places and this will
  1401. % help us identify the actual source line that generated the bug
  1402. % check.
  1403. If you see UdfExceptionFilter on the stack then the 2nd and 3rd
  1404. parameters are the exception record and context record. Do a .cxr
  1405. on the 3rd parameter and then kb to obtain a more helpful stack
  1406. trace.
  1407. MACHINE_CHECK_EXCEPTION (0x9C)
  1408. A fatal Machine Check Exception has occurred.
  1409. KeBugCheckEx parameters;
  1410. x86 Processors
  1411. If the processor has ONLY MCE feature available (For example Intel
  1412. Pentium), the parameters are:
  1413. 1 - Low 32 bits of P5_MC_TYPE MSR
  1414. 2 - Address of MCA_EXCEPTION structure
  1415. 3 - High 32 bits of P5_MC_ADDR MSR
  1416. 4 - Low 32 bits of P5_MC_ADDR MSR
  1417. If the processor also has MCA feature available (For example Intel
  1418. Pentium Pro), the parameters are:
  1419. 1 - Bank number
  1420. 2 - Address of MCA_EXCEPTION structure
  1421. 3 - High 32 bits of MCi_STATUS MSR for the MCA bank that had the error
  1422. 4 - Low 32 bits of MCi_STATUS MSR for the MCA bank that had the error
  1423. IA64 Processors
  1424. 1 - Bugcheck Type
  1425. 1 - MCA_ASSERT
  1426. 2 - MCA_GET_STATEINFO
  1427. SAL returned an error for SAL_GET_STATEINFO while processing MCA.
  1428. 3 - MCA_CLEAR_STATEINFO
  1429. SAL returned an error for SAL_CLEAR_STATEINFO while processing MCA.
  1430. 4 - MCA_FATAL
  1431. FW reported a fatal MCA.
  1432. 5 - MCA_NONFATAL
  1433. SAL reported a recoverable MCA and we don't support currently
  1434. support recovery or SAL generated an MCA and then couldn't
  1435. produce an error record.
  1436. 0xB - INIT_ASSERT
  1437. 0xC - INIT_GET_STATEINFO
  1438. SAL returned an error for SAL_GET_STATEINFO while processing INIT event.
  1439. 0xD - INIT_CLEAR_STATEINFO
  1440. SAL returned an error for SAL_CLEAR_STATEINFO while processing INIT event.
  1441. 0xE - INIT_FATAL
  1442. Not used.
  1443. 2 - Address of log
  1444. 3 - Size of log
  1445. 4 - Error code in the case of x_GET_STATEINFO or x_CLEAR_STATEINFO
  1446. USER_MODE_HEALTH_MONITOR (0x9E)
  1447. One or more critical user mode components failed to satisfy a health check.
  1448. Hardware mechanisms such as watchdog timers can detect that basic kernel
  1449. services are not executing. However, resource starvation issues, including
  1450. memory leaks, lock contention, and scheduling priority misconfiguration,
  1451. may block critical user mode components without blocking DPCs or
  1452. draining the nonpaged pool.
  1453. Kernel components can extend watchdog timer functionality to user mode
  1454. by periodically monitoring critical applications. This bugcheck indicates
  1455. that a user mode health check failed in a manner such that graceful
  1456. shutdown is unlikely to succeed. It restores critical services by
  1457. rebooting and/or allowing application failover to other servers.
  1458. PARAMETERS
  1459. 1 - Process that failed to satisfy a health check within the
  1460. configured timeout
  1461. 2 - Health monitoring timeout (seconds)
  1462. DRIVER_POWER_STATE_FAILURE (0x9F)
  1463. A driver is causing an inconsistent power state.
  1464. PARAMETERS
  1465. 1 - SubCode
  1466. VALUES:
  1467. 1 : The device object is being freed which still has an
  1468. outstanding power request which it has not completed
  1469. 2 - DeviceObject
  1470. 2 : The device object completed the irp for the system power
  1471. state request, but failed to call PoStartNextPowerIrp
  1472. 2 - Optional Target device's DEVICE_OBJECT
  1473. 3 - DeviceObject
  1474. 4 - Optional DriverObject
  1475. 0x500 : The device object completed the irp for the system power
  1476. state request, but failed to call PoStartNextPowerIrp.
  1477. 3 - Optional Target device's DEVICE_OBJECT
  1478. 4 - DeviceObject
  1479. END_VALUES
  1480. INTERNAL_POWER_ERROR (0xA0)
  1481. The power policy manager experienced a fatal error.
  1482. PARAMETERS:
  1483. 1 -
  1484. VALUES:
  1485. 1 : Error Handling power IRP.
  1486. 2 -
  1487. VALUES:
  1488. 1 : A device has overrun its maximum number of reference counts.
  1489. 3 - maximum number of references allowed.
  1490. 2 : Too many inrush power irps have been queue.
  1491. 3 - maximum number of pending irps allowed.
  1492. 3 : Too many inrush power irps have been queue.
  1493. 3 - maximum number of pending irps allowed.
  1494. 4 : Too many inrush power irps have been queue.
  1495. 3 - maximum number of pending irps allowed.
  1496. 5 : Power IRP has been sent to a passive level deviceobject.
  1497. END_VALUES
  1498. 2 : (POP_INTERNAL) An internal failure has occurred while attempting to process
  1499. a power event. To debug this, dump the stack and look for the
  1500. function ntoskrnl!_PopInternalError. The first argument is
  1501. (error_code << 16) | __LINE__. If the caller is PopExceptionFilter, then
  1502. the first argument to this function is of type PEXCEPTION_POINTERS.
  1503. In the debugger, type 'dt nt!_EXCEPTION_POINTERS <argument>'.
  1504. Then type '.cxr <value of context record from the previous command>'.
  1505. All subsequent debugger commands will show you the actual
  1506. source of the error. Start with a stack trace by typing 'kb'.
  1507. 3 : The checksum for a hibernation context page does not match.
  1508. 2 - Expected checksum
  1509. 3 - Actual checksum
  1510. 4 - Linenumber of the failure.
  1511. 4 : The checksum for a page about to be written to the hibernation file
  1512. does not match its expected checksum.
  1513. 2 - Expected checksum
  1514. 3 - Actual checksum
  1515. 4 - Linenumber of the failure.
  1516. 5 : An unknown shutdown code has been sent to the system shutdown handler.
  1517. 7 : (POP_MISC) Unhandled exception. To debug this, dump the stack. Look
  1518. for the function ntoskrnl!PopExceptionFilter. The first
  1519. argument to this function is of type PEXCEPTION_POINTERS.
  1520. In the debugger, type 'dt nt!_EXCEPTION_POINTERS <argument>'.
  1521. Then type '.cxr <value of context record from the previous command>'.
  1522. All subsequent debugger commands will show you the actual
  1523. source of the error. Start with a stack trace by typing 'kb'.
  1524. 8 : (POP_SYS) A fatal error has occured while processing a system power event.
  1525. 2 -
  1526. VALUES:
  1527. 0x100 : An unknown device type is being processed.
  1528. 3 - DEVICE_OBJECT
  1529. 4 - POWER_CHANNEL_SUMMARY
  1530. END_VALUES
  1531. 0x101 : Unhandled exception occured while processing a system power event.
  1532. 3 - ExceptionPointer. To debug this, in the debugger type:
  1533. 'dt nt!_EXCEPTION_POINTERS <argument>'. Then type:
  1534. '.cxr <value of context record from the previous command>'.
  1535. All subsequent debugger commands will show you the actual
  1536. source of the error. Start with a stack trace by typing 'kb'.
  1537. 0x102 : Hibernation orking buffer size is not page aligned
  1538. 3 - DUMP_INITIALIZATION_CONTEXT
  1539. 4 - POP_HIBER_CONTEXT
  1540. 0x103 : All working pages have failed to be accounted for during the hibernation process.
  1541. 3 - POP_HIBER_CONTEXT
  1542. 0x104 : An attempt was made to map internal hibernate memory while
  1543. the internal memory structures were locked.
  1544. 3 - POP_HIBER_CONTEXT
  1545. 0x105 : An attempt was made to map internal hibernate memory with
  1546. an unsupported memory type flag.
  1547. 3 - POP_HIBER_CONTEXT
  1548. 0x106 : A memory descriptor list was created during the hibernation process which
  1549. describes memory that is not paged-aligned.
  1550. 3 - MDL
  1551. 0x107 : A data mismatch has occurred in the internal hibernation data
  1552. structures.
  1553. 3 - POP_HIBER_CONTEXT
  1554. 4 - PO_MEMORY_RANGE_ARRAY
  1555. 0x108 : The disk subsystem failed to properly write part of the hibernation
  1556. file.
  1557. 3 - POP_HIBER_CONTEXT
  1558. 0x109 : The checksum for the processor state data does not match its
  1559. expected checksum.
  1560. 3 - Expected checksum
  1561. 4 - Actual checksum
  1562. 0x10A : The disk subsystem failed to properly write part of the hibernation
  1563. file.
  1564. 3 - POP_HIBER_CONTEXT
  1565. 4 - NTSTATUS failure code
  1566. 0x200 : An unknown device type is being checked for an idle state.
  1567. 3 - DEVICE_OBJECT
  1568. 4 - DEVICE_OBJECT_POWER_EXTENSION
  1569. 0x300 : An unknown status was returned from a battery power IRP.
  1570. 3 - DEVICE_OBJECT
  1571. 4 - IRP
  1572. 0x301 : The battery has entered an unknown state..
  1573. 3 - DEVICE_OBJECT
  1574. 4 - IRP
  1575. 0x400 : A device has overrun its maximum number of reference counts.
  1576. 3 - IO_STACK_LOCATION
  1577. 4 - DEVICE_OBJECT
  1578. 0x401 : Too many inrush power irps have been queue.
  1579. 3 - Pending IRP list.
  1580. 4 - DEVICE_OBJECT
  1581. 0x402 : Too many inrush power irps have been queue.
  1582. 3 - Pending IRP list.
  1583. 4 - DEVICE_OBJECT
  1584. 0x403 : Too many inrush power irps have been queue.
  1585. 3 - Pending IRP list.
  1586. 4 - DEVICE_OBJECT
  1587. 0x404 : Power IRP has been sent to a passive level deviceobject.
  1588. 3 - IO_STACK_LOCATION.
  1589. 4 - DEVICE_OBJECT
  1590. 0x500 : An unknown status was returned from a thermal power IRP.
  1591. 3 - IRP
  1592. 4 - DEVICE_OBJECT
  1593. END_VALUES
  1594. PCI_BUS_DRIVER_INTERNAL (0xA1)
  1595. The PCI Bus driver detected inconsistency
  1596. problems in its internal structures and could not continue.
  1597. MEMORY_IMAGE_CORRUPT (0xA2)
  1598. On a system wake operation, various regions of memory may be CRCed to
  1599. guard against memory failures.
  1600. PARAMETERS
  1601. 1 -
  1602. VALUES:
  1603. 2 : Table page check failure
  1604. 2 - IF PARAMETER 3 IS ZERO:
  1605. the page number in of the table page which failed
  1606. IF PARAMETER 3 IS NONZERO:
  1607. the page number with the failing page run index
  1608. 3 - the index which failed to match the run (or zero)
  1609. 3 : The checksum for the range of memory listed is incorrect
  1610. 2 - starting physical page # of the range
  1611. 3 - length (in pages) of the range
  1612. 4 - the page number of the table page containing this run
  1613. END_VALUES
  1614. ACPI_DRIVER_INTERNAL (0xA3)
  1615. The ACPI Driver detected an internal inconsistency. The inconsistency is
  1616. so severe that continuing to run would cause serious problems.
  1617. The ACPI driver calls this when the state is so inconsistent that proceeding
  1618. would actually be dangerous. The problem may or may not be a BIOS issue, but
  1619. there is no way to tell.
  1620. % To find the place where the driver died, look at the 2nd parameter. The high
  1621. % word corresponds to an entry in wdm\acpi\driver\nt\debug.h. The low word
  1622. % corresponds to a line number.
  1623. CNSS_FILE_SYSTEM_FILTER (0xA4)
  1624. See the comment for FAT_FILE_SYSTEM (0x23)
  1625. ACPI_BIOS_ERROR (0xA5)
  1626. The ACPI Bios in the system is not fully compliant with the ACPI specification.
  1627. The first value indicates where the incompatibility lies:
  1628. PARAMETERS
  1629. 1 -
  1630. VALUES:
  1631. 1 : ACPI_ROOT_RESOURCES_FAILURE.
  1632. ACPI cannot find the SCI Interrupt vector in the resources handed
  1633. to it when ACPI is started.
  1634. 2 - ACPI's deviceExtension
  1635. 3 - ACPI's ResourceList
  1636. 4 -
  1637. VALUES:
  1638. 0 : No resource list found
  1639. 1 : No IRQ resource found in list
  1640. END_VALUES
  1641. 2 : ACPI_ROOT_PCI_RESOURCE_FAILURE
  1642. ACPI could not process the resource list for the PCI root buses
  1643. % There is an White Paper on the Web Site about this problem.
  1644. 2 - The ACPI Extension for the PCI bus.
  1645. 3 -
  1646. VALUES:
  1647. 0 : ACPI cannot convert the BIOS' resource list into the proper
  1648. format. This probably represents a flaw in the BIOS' list
  1649. encoding procedure.
  1650. 4 - Pointer to the QUERY_RESOURCES irp
  1651. 1 : ACPI cannot convert the BIOS' resource list into the proper
  1652. format. This probably represents a flaw in the BIOS' list
  1653. encoding procedure.
  1654. 4 - Pointer to the QUERY_RESOURCE_REQUIREMENTS irp
  1655. 2 : ACPI found an empty resource list.
  1656. 4 - 0
  1657. 3 : ACPI could not find the current bus number in the CRS.
  1658. 4 - Pointer to the PNP CRS descriptor
  1659. Other : Any other value is a pointer to the Resource List for PCI.
  1660. This indicates that there is an overlap between the list of
  1661. resources that PCI claims to decode and the list of memory
  1662. regions reported by the E820 BIOS interface.
  1663. 4 - Pointer to the E820 Memory Table
  1664. END_VALUES
  1665. 3 : ACPI_FAILED_MUST_SUCCEED_METHOD
  1666. ACPI tried to run a control method while creating device extensions
  1667. to represent the ACPI namespace, but this control method failed.
  1668. 2 - The ACPI Object that was being run
  1669. 3 - return value from the interpreter
  1670. 4 - Name of the control method (in ULONG format)
  1671. 4 : ACPI_PRW_PACKAGE_EXPECTED_INTEGER
  1672. ACPI evaluated a _PRW and expected to find an integer as a
  1673. package element.
  1674. 2 - The ACPI Extension for which the _PRW belongs to
  1675. 3 - Pointer to the method
  1676. 4 - The DataType returned (see amli.h)
  1677. 5 : ACPI_PRW_PACKAGE_TOO_SMALL
  1678. ACPI evaluated a _PRW and the package that came back failed to
  1679. contain at least 2 elements. The ACPI specification requires that
  1680. two elements to always be present in a _PRW.
  1681. 2 - The ACPI Extension for which the _PRW belongs to
  1682. 3 - Pointer to the _PRW
  1683. 4 - Number of elements in the _PRW
  1684. 6 : ACPI_PRx_CANNOT_FIND_OBJECT
  1685. ACPI tried to find a named object named, but could not find it.
  1686. 2 - The ACPI Extension for which the _PRx belongs to
  1687. 3 - Pointer to the _PRx
  1688. 4 - Pointer to the name of the object to look for
  1689. 7 : ACPI_EXPECTED_BUFFER
  1690. ACPI evaluated a method and expected to receive a Buffer in return.
  1691. However, the method returned some other data type
  1692. 2 - The ACPI Extension for which the method belongs to
  1693. 3 - Pointer to the method
  1694. 4 - The DataType returned (see amli.h)
  1695. 8 : ACPI_EXPECTED_INTEGER
  1696. ACPI evaluated a method and expected to receive an Integer in return.
  1697. However, the method returned some other data type
  1698. 2 - The ACPI Extension for which the method belongs to
  1699. 3 - Pointer to the method
  1700. 4 - The DataType returned (see amli.h)
  1701. 9 : ACPI_EXPECTED_PACKAGE
  1702. ACPI evaluated a method and expected to receive a Package in return.
  1703. However, the method returned some other data type
  1704. 2 - The ACPI Extension for which the method belongs to
  1705. 3 - Pointer to the method
  1706. 4 - The DataType returned (see amli.h)
  1707. 0xA : ACPI_EXPECTED_STRING
  1708. ACPI evaluated a method and expected to receive a String in return.
  1709. However, the method returned some other data type
  1710. 2 - The ACPI Extension for which the method belongs to
  1711. 3 - Pointer to the method
  1712. 4 - The DataType returned (see amli.h)
  1713. 0xB : ACPI_EJD_CANNOT_FIND_OBJECT
  1714. ACPI cannot find the object referenced to by an _EJD string
  1715. 2 - The ACPI Extension for which which the _EJD belongs to
  1716. 3 - The status returned by the interpreter
  1717. 4 - Name of the object ACPI is trying to find
  1718. 0xC : ACPI_CLAIMS_BOGUS_DOCK_SUPPORT
  1719. ACPI provides faulty/insufficient information for dock support
  1720. 2 - The ACPI Extension for which ACPI found a dock device
  1721. 3 - Pointer to the _EJD method
  1722. 4 -
  1723. VALUES:
  1724. 0: Bios does not claim system is dockage
  1725. 1: Duplicate device extensions for dock device
  1726. END_VALUES
  1727. 0xD : ACPI_REQUIRED_METHOD_NOT_PRESENT
  1728. ACPI could not find a required method/object in the namespace
  1729. This is the bugcheck that is used if a vendor does not have an
  1730. _HID or _ADR present
  1731. 2 - The ACPI Extension that ACPI needs the object for
  1732. 3 - The (ULONG) name of the method ACPI looked for
  1733. 4 -
  1734. VALUES:
  1735. 0: Base Case
  1736. 1: Conflict
  1737. END_VALUES
  1738. 0xE : ACPI_POWER_NODE_REQUIRED_METHOD_NOT_PRESENT
  1739. ACPI could not find a requird method/object in the namespace for
  1740. a power resource (or entity other than a "device"). This is the
  1741. bugcheck used if a vendor does not have an _ON, _OFF, or _STA present
  1742. for a power resource
  1743. 2 - The NS PowerResource that ACPI needs the object for
  1744. 3 - The (ULONG) name of the method ACPI looked for
  1745. 4 -
  1746. VALUES:
  1747. 0: Base Case
  1748. END_VALUES
  1749. 0xF : ACPI_PNP_RESOURCE_LIST_BUFFER_TOO_SMALL
  1750. ACPI could not parse the resource descriptor
  1751. 2 - The current buffer that ACPI was parsing
  1752. 3 - The buffer's tag
  1753. 4 - The specified length of the buffer
  1754. 0x10 : ACPI_CANNOT_MAP_SYSTEM_TO_DEVICE_STATES
  1755. ACPI could not map determine the system to device state mapping
  1756. correctly.
  1757. % There is a very long white paper about this topic.
  1758. 2 - The ACPI Extension for which ACPI is trying to do the mapping
  1759. 3 -
  1760. VALUES:
  1761. 0 : The _PRx mapped back to a non-supported S-state
  1762. 4 - The DEVICE_POWER_STATE (ie: x+1)
  1763. 1 : ACPI cannot find a D-state to associate with the S-state
  1764. 4 - The SYSTEM_POWER_STATE that is causing the problem
  1765. 2 : The device claims to be able to wake the system when the
  1766. system is in this S-state, but the system doesn't actually
  1767. support this S-state.
  1768. 4 - The SYSTEM_POWER_STATE that is causing the problem
  1769. END_VALUES
  1770. 0x11 : ACPI_SYSTEM_CANNOT_START_ACPI
  1771. The system could not enter ACPI mode
  1772. 2 -
  1773. VALUES:
  1774. 0 : System could not initialize AML interpreter
  1775. 1 : System could not find RSDT
  1776. 2 : System could not allocate critical driver structures
  1777. 3 : System could not load RSDT
  1778. 4 : System could not load DDBs
  1779. 5 : System cannot connect Interrupt vector
  1780. 6 : SCI_EN never becomes set in PM1 Control Register
  1781. 7 : Table checksum is incorrect
  1782. 3 - Pointer to the table that had a bad checksum
  1783. 4 - Creator Revision
  1784. 8 : Failed to load DDB
  1785. 3 - Pointer to the table that ACPI failed to load
  1786. 4 - Creator Revision
  1787. 9 : Unsupported Firmware Version
  1788. 3 - FADT Version
  1789. 0xA : System could not find MADT
  1790. 0xB : System could not find any valid Local SAPIC structures in
  1791. the MADT
  1792. END_VALUES
  1793. 0x14 : ACPI_PNP_RESOURCE_LIST_LENGTH_TOO_LARGE
  1794. ACPI could not parse the resource descriptor, the length exceeds
  1795. MAXULONG.
  1796. 2 - The current buffer that ACPI was parsing
  1797. 3 - The buffer's tag
  1798. 4 - Pointer to a variable containing ULONGLONG length of the buffer
  1799. 0x2001 : ACPI_FAILED_PIC_METHOD
  1800. ACPI tried to evaluate the PIC control method and but failed
  1801. 2 - InterruptModel (Integer)
  1802. 3 - return value from interpreter
  1803. 4 - Pointer to the PIC control method
  1804. 0x10001 : ACPI_CANNOT_ROUTE_INTERRUPTS
  1805. ACPI tried to do interrupt routing, but failed
  1806. 2 - Pointer to the device object
  1807. 3 - Pointer to the parent of the device object
  1808. 4 - Pointer to the PRT
  1809. 0x10002 : ACPI_PRT_CANNOT_FIND_LINK_NODE
  1810. ACPI could not find the link node referenced in a _PRT
  1811. (This code exists in Windows 2000, but is obsolete in XP)
  1812. 2 - Pointer to the device object
  1813. 3 - Pointer to the string name ACPI is looking for, but could not find.
  1814. 4 - Pointer to the PRT. Dump this with !acpikd.nsobj <argument 4>
  1815. 0x10003 : ACPI_PRT_CANNOT_FIND_DEVICE_ENTRY
  1816. ACPI could not find a mapping in the _PRT package for a device
  1817. (This code exists in Windows 2000, but is obsolete in XP)
  1818. 2 - Pointer to the device object
  1819. 3 - The Device ID / Function Number. This DWORD is encoded
  1820. as follows: Bits 5:0 are the PCI Device Number, Bits 8:6 are
  1821. the PCI function number.
  1822. 4 - Pointer to the PRT. Dump this with !acpikd.nsobj <argument 4>
  1823. 0x10005 : ACPI_PRT_HAS_INVALID_FUNCTION_NUMBERS
  1824. ACPI found an entry in the _PRT for which the function ID isn't
  1825. all F's. The generic format for a _PRT entry is that the device
  1826. number is specified, but the function number isn't. If it isn't
  1827. done this way, then the machine vendor can introduce dangerous
  1828. ambiguities.
  1829. (This code exists in Windows 2000, but is obsolete in XP)
  1830. %
  1831. % The Win98 behaviour is to bugcheck if it see this condition,
  1832. % so the NT operating systems do so as well.
  1833. 2 - Pointer to the PRT object. Dump this with !acpikd.nsobj <argument 2>
  1834. 3 - Pointer to the current PRT Element. This is an index into the PRT.
  1835. 4 - The DeviceID/FunctionID of the element. This DWORD is
  1836. encoded. Bits 15:0 are the PCI Function Number.
  1837. Bits 31:16 are the PCI Device Number.
  1838. 0x10006 : ACPI_LINK_NODE_CANNOT_BE_DISABLED
  1839. ACPI found a link node, but cannot disable it. Link nodes must
  1840. be disable to allow for reprogramming
  1841. 2 - Pointer to the link node. This device is missing the _DIS method.
  1842. 0x10007 :
  1843. The _PRT contained a reference to a vector not described in the
  1844. I/O APIC entries MAPIC table.
  1845. 2 - The vector that couldn't be found
  1846. 0x20000 :
  1847. The PM_TMR_BLK entry in the Fixed ACPI Description Table doesn't
  1848. point to a working ACPI timer block.
  1849. 2 - The I/O port in the Fixed Table
  1850. END_VALUES
  1851. DESCRIPTION
  1852. This bug check covers a great variety of ACPI problems. If a kernel debugger
  1853. is attached, use "!analyze -v". This command will analyze the precise problem,
  1854. and display whatever information is most useful for debugging the specific
  1855. error.
  1856. BAD_EXHANDLE (0xA7)
  1857. The kernel mode handle table detected an inconsistent handle table
  1858. entry state.
  1859. SESSION_HAS_VALID_POOL_ON_EXIT (0xAB)
  1860. PARAMETERS
  1861. 1 - session ID
  1862. 2 - number of paged pool bytes that are leaking
  1863. 3 - number of nonpaged pool bytes that are leaking
  1864. 4 - total number of paged and nonpaged allocations that are leaking.
  1865. nonpaged allocations are in the upper half of this word,
  1866. paged allocations are in the lower half of this word.
  1867. DESCRIPTION
  1868. Caused by a session driver not freeing its pool allocations prior to a
  1869. session unload. This indicates a bug in win32k.sys, atmfd.dll,
  1870. rdpdd.dll or a video driver.
  1871. HAL_MEMORY_ALLOCATION (0xAC)
  1872. The HAL was unable to obtain memory for a system critical requirement.
  1873. These allocations are made early in system initialization and such a
  1874. failure is not expected. It probably indicates some other critical error
  1875. such as pool corruption or massive consumption.
  1876. PARAMETERS
  1877. 1 - Allocation size.
  1878. 2 - 0
  1879. 3 - Pointer to string containing file name.
  1880. 4 - (reserved)
  1881. % 4 - Line number of call to KeBugCheckEx.
  1882. VIDEO_DRIVER_INIT_FAILURE (0xB4)
  1883. The system was not able to go into graphics mode because no display drivers
  1884. were able to start. This usually occurs if no video miniport drivers load
  1885. successfully.
  1886. ATTEMPTED_SWITCH_FROM_DPC (0xB8)
  1887. A wait operation, attach process, or yield was attempted from a DPC routine.
  1888. This is an illegal operation and the stack track will lead to the offending
  1889. code and original DPC routine.
  1890. CHIPSET_DETECTED_ERROR (0xB9)
  1891. SESSION_HAS_VALID_VIEWS_ON_EXIT (0xBA)
  1892. PARAMETERS
  1893. 1 - session ID
  1894. 2 - number of mapped views that are leaking
  1895. 3 - address of this session's mapped views table
  1896. 4 - size of this session's mapped views table.
  1897. DESCRIPTION
  1898. Caused by a session driver not unmapping its mapped views prior to a
  1899. session unload. This indicates a bug in win32k.sys, atmfd.dll,
  1900. rdpdd.dll or a video driver.
  1901. NETWORK_BOOT_INITIALIZATION_FAILED (0xBB)
  1902. PARAMETERS
  1903. 1 - the part of network initialization that failed
  1904. 2 - the failure status
  1905. DESCRIPTION
  1906. Caused if we are booting off the network, and a critical function fails during
  1907. IO initialization. Currently the codes for the first value are:
  1908. 1 - updating the registry.
  1909. 2 - starting the network stack - Windows sends IOCTLs to the redirector and
  1910. datagram receiver, then waits for the redirector to be ready. If it is not
  1911. ready within a certain period of time, initialization fails.
  1912. 3 - failed sending the DHCP IOCTL to TCP - this is how Windows informs the
  1913. transport of its IP adress.
  1914. NETWORK_BOOT_DUPLICATE_ADDRESS (0xBC)
  1915. PARAMETERS
  1916. 1 - the IP address, show as a hex DWORD. So an address aa.bb.cc.dd will
  1917. appear as 0xddccbbaa.
  1918. 2 - the hardware address of the other machine.
  1919. 3 - the hardware address of the other machine.
  1920. 4 - the hardware address of the other machine. For Ethernet, a MAC address
  1921. of aa-bb-cc-dd-ee-ff will be indicated by the second parameter
  1922. containing 0xaabbccdd, the third parameter containing 0xeeff0000, and
  1923. the fourth parameter containing 0x00000000.
  1924. DESCRIPTION
  1925. This indicates that when TCP/IP sent out an ARP for its IP address, it got
  1926. a response from another machine, indicating a duplicate IP address. When we
  1927. are booting off the network this is a fatal error.
  1928. INVALID_HIBERNATED_STATE (0xBD)
  1929. The hibernated memory image does not match the current hardware configuration.
  1930. This bugcheck occurs when a system resumes from hibernate and discovers that the
  1931. hardware has been changed while the system was hibernated.
  1932. Note: This bug check no longer exists in any version of Windows.
  1933. % JVert wants this kept in bugcodes.w in case it is reinstated at some
  1934. % point in the future.
  1935. PARAMETERS
  1936. 1 - hardware that was invalid
  1937. VALUES:
  1938. 1 : Number of installed processors is less than before the hibernation
  1939. 2 - number of processors before hibernation
  1940. 3 - number of processors after hibernation
  1941. END_VALUES
  1942. ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE)
  1943. An attempt was made to write to readonly memory. The guilty driver is on the
  1944. stack trace (and is typically the current instruction pointer).
  1945. PARAMETERS
  1946. 1 - Virtual address for the attempted write.
  1947. 2 - PTE contents.
  1948. 3 - (reserved)
  1949. % 3 - Unique internal Mm information.
  1950. 4 - (reserved)
  1951. % 4 - Unique internal Mm code.
  1952. DESCRIPTION
  1953. When possible, the guilty driver's name (Unicode string) is printed on
  1954. the bugcheck screen and saved in KiBugCheckDriver.
  1955. MUTEX_ALREADY_OWNED (0xBF)
  1956. This thread is attempting to acquire ownership of a mutex it already owns.
  1957. PARAMETERS
  1958. 1 - Address of Mutex
  1959. 2 - Thread
  1960. 3 - 0
  1961. 4 - (reserved)
  1962. % 4 - Unique value to help development isolate the instance.
  1963. SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION (0xC1)
  1964. Special pool has detected memory corruption. Typically the current thread's
  1965. stack backtrace will reveal the guilty party.
  1966. PARAMETERS
  1967. 4 - subclass of driver violation.
  1968. VALUES:
  1969. 0x20 : caller is trying to free pool which is not allocated
  1970. 1 - address trying to free
  1971. 2 - (reserved)
  1972. % 2 - Mm internal code
  1973. 3 - 0.
  1974. 0x21 : caller is trying to free a bad address
  1975. 1 - address trying to free
  1976. 2 - bytes requested
  1977. 3 - bytes calculated
  1978. 0x22 : caller is trying to free a bad address
  1979. 1 - address trying to free
  1980. 2 - bytes requested
  1981. 3 - bytes calculated
  1982. 0x23 : caller is freeing an address where nearby bytes within the same page have been corrupted
  1983. 1 - address trying to free
  1984. 2 - address where bits are corrupted
  1985. 3 - (reserved)
  1986. % 3 - unique internal Mm pattern
  1987. 0x24 : caller is freeing an address where bytes after the end of the allocation have been overwritten
  1988. 1 - address trying to free
  1989. 2 - address where bits are corrupted
  1990. 3 - (reserved)
  1991. % 3 - unique internal Mm pattern
  1992. 0x30 : caller is trying to allocate pool from an incorrect IRQL level
  1993. 1 - current IRQL
  1994. 2 - pool type
  1995. 3 - number of bytes
  1996. 0x31 : caller is trying to free pool from an incorrect IRQL level
  1997. 1 - current IRQL
  1998. 2 - pool type
  1999. 3 - address trying to free
  2000. END_VALUES
  2001. BAD_POOL_CALLER (0xC2)
  2002. The current thread is making a bad pool request. Typically this is at a bad IRQL level or double freeing the same allocation, etc.
  2003. PARAMETERS
  2004. 1 - type of pool violation the caller is guilty of.
  2005. VALUES:
  2006. 0x0 : The caller is requesting a zero byte pool allocation.
  2007. Parameter 2 - zero.
  2008. Parameter 3 - the pool type being allocated.
  2009. Parameter 4 - the pool tag being used.
  2010. 0x1 : Pool header has been corrupted
  2011. Parameter 2 - Pointer to pool header
  2012. Parameter 3 - First part of pool header contents
  2013. Parameter 4 - 0
  2014. 0x2 : Pool header has been corrupted
  2015. Parameter 2 - Pointer to pool header
  2016. Parameter 3 - First part of pool header contents
  2017. Parameter 4 - 0
  2018. 0x4 : Pool header has been corrupted
  2019. Parameter 2 - Pointer to pool header
  2020. Parameter 3 - First part of pool header contents
  2021. Parameter 4 - 0
  2022. 0x6 : Attempt to free pool which was already freed
  2023. Parameter 2 - (reserved)
  2024. % Parameter 2 - __LINE__
  2025. Parameter 3 - Pointer to pool header
  2026. Parameter 4 - Pool header contents
  2027. 0x7 : Attempt to free pool which was already freed
  2028. Parameter 2 - (reserved)
  2029. % Parameter 2 - __LINE__
  2030. Parameter 3 - Memory contents of the pool block
  2031. Parameter 4 - Pointer to pool header
  2032. 0x8 : Attempt to allocate pool at invalid IRQL
  2033. Parameter 2 - Current IRQL
  2034. Parameter 3 - Pool type
  2035. Parameter 4 - Size of allocation
  2036. 0x9 : Attempt to free pool at invalid IRQL
  2037. Parameter 2 - Current IRQL
  2038. Parameter 3 - Pool type
  2039. Parameter 4 - Address of pool
  2040. 0xA : Attempt to free some other component's protected pool.
  2041. Parameter 2 - Address of pool
  2042. Parameter 3 - Allocator's tag
  2043. Parameter 4 - Tag being used in the attempted free.
  2044. 0xB/0xC/0xD : Attempt to release quota on a corrupted pool allocation.
  2045. Parameter 2 - Address of pool
  2046. Parameter 3 - Pool allocation's tag
  2047. Parameter 4 - Quota process pointer (bad).
  2048. 0x40 : Attempt to free usermode address to kernel pool
  2049. Parameter 2 - Starting address
  2050. Parameter 3 - Start of system address space
  2051. Parameter 4 - 0
  2052. 0x41 : Attempt to free a non-allocated nonpaged pool address
  2053. Parameter 2 - Starting address
  2054. Parameter 3 - physical page frame
  2055. Parameter 4 - highest physical page frame
  2056. 0x42 : Attempt to free a virtual address which was never in any pool
  2057. Parameter 2 - Address being freed.
  2058. Parameter 3 - 0
  2059. Parameter 4 - 0
  2060. 0x43 : Attempt to free a virtual address which was never in any pool
  2061. Parameter 2 - Address being freed.
  2062. Parameter 3 - 0
  2063. Parameter 4 - 0
  2064. 0x50 : Attempt to free a non-allocated paged pool address
  2065. Parameter 2 - Starting address
  2066. Parameter 3 - Start offset in pages from beginning of paged pool
  2067. Parameter 4 - Size in bytes of paged pool
  2068. 0x60 : Attempt to free an invalid contiguous memory address (ie: caller of MmFreeContiguousMemory is passing a bad pointer).
  2069. Parameter 2 - Starting address
  2070. Parameter 3 - 0
  2071. Parameter 4 - 0
  2072. 0x99 : Attempt to free pool with invalid address (or corruption in pool header)
  2073. Parameter 2 - Address being freed
  2074. Parameter 3 - 0
  2075. Parameter 4 - 0
  2076. 0x9A : Attempt to allocate must-succeed pool (this pool type has been deprecated)
  2077. Parameter 2 - Pool type
  2078. Parameter 3 - Size of allocation in bytes
  2079. Parameter 4 - Allocation's pool tag
  2080. 0x9B : Attempt to allocate pool with a tag of zero. This would make the pool untrackable and worse, corrupt the existing tag tables.
  2081. Parameter 2 - Pool type
  2082. Parameter 3 - Size of allocation in bytes
  2083. Parameter 4 - Caller's address.
  2084. 0x9C : Attempt to allocate pool with a tag of BIG. This would make the pool untrackable and worse, corrupt the existing tag tables.
  2085. Parameter 2 - Pool type
  2086. Parameter 3 - Size of allocation in bytes
  2087. Parameter 4 - Caller's address.
  2088. END_VALUES
  2089. DRIVER_VERIFIER_DETECTED_VIOLATION (0xC4)
  2090. A device driver attempting to corrupt the system has been caught. This is
  2091. because the driver was specified in the registry as being suspect (by the
  2092. administrator) and the kernel has enabled substantial checking of this driver.
  2093. If the driver attempts to corrupt the system, bugchecks 0xC4, 0xC1 and 0xA will
  2094. be among the most commonly seen crashes.
  2095. PARAMETERS
  2096. 1 - subclass of driver violation.
  2097. VALUES
  2098. 0x00 : caller is trying to allocate zero bytes
  2099. 2 - current IRQL
  2100. 3 - pool type
  2101. 4 - number of bytes
  2102. 0x01 : caller is trying to allocate paged pool at DISPATCH_LEVEL or above
  2103. 2 - current IRQL
  2104. 3 - pool type
  2105. 4 - number of bytes
  2106. 0x02 : caller is trying to allocate nonpaged pool at an IRQL above DISPATCH_LEVEL
  2107. 2 - current IRQL
  2108. 3 - pool type
  2109. 4 - number of bytes
  2110. 0x03 : caller is trying to allocate more than one page of mustsucceed
  2111. pool, but one page is the maximum allowed by this API.
  2112. 0x10 : caller is freeing a bad pool address
  2113. 2 - bad pool address
  2114. 0x11 : caller is trying to free paged pool at DISPATCH_LEVEL or above
  2115. 2 - current IRQL
  2116. 3 - pool type
  2117. 4 - pool address
  2118. 0x12 : caller is trying to free nonpaged pool at an IRQL above DISPATCH_LEVEL
  2119. 2 - current IRQL
  2120. 3 - pool type
  2121. 4 - pool address
  2122. 0x13 : the pool the caller is trying to free is already free.
  2123. 2 - (reserved)
  2124. % 2 - line number
  2125. 3 - pool header
  2126. 4 - pool header contents
  2127. 0x14 : the pool the caller is trying to free is already free.
  2128. 2 - (reserved)
  2129. % 2 - line number
  2130. 3 - pool header
  2131. 4 - pool header contents
  2132. 0x15 : the pool the caller is trying to free contains an active timer.
  2133. 2 - timer entry
  2134. 3 - pool type
  2135. 4 - pool address being freed
  2136. 0x16 : the pool the caller is trying to free is a bad address.
  2137. 2 - line number
  2138. 3 - pool address
  2139. 4 - 0
  2140. 0x17 : the pool the caller is trying to free contains an active ERESOURCE.
  2141. 2 - resource entry
  2142. 3 - pool type
  2143. 4 - pool address being freed
  2144. 0x30 : raising IRQL to an invalid level,
  2145. 2 - current IRQL,
  2146. 3 - new IRQL
  2147. 0x31 : lowering IRQL to an invalid level,
  2148. 2 - current IRQL,
  2149. 3 - new IRQL
  2150. 4 - 0 means the new IRQL is bad, 1 means the IRQL is invalid inside a DPC routine
  2151. 0x32 : releasing a spinlock when not at DISPATCH_LEVEL.
  2152. 2 - current IRQL,
  2153. 3 - spinlock address
  2154. 0x33 : acquiring a fast mutex when not at APC_LEVEL or below.
  2155. 2 - current IRQL,
  2156. 3 - fast mutex address
  2157. 0x34 : releasing a fast mutex when not at APC_LEVEL.
  2158. 2 - current IRQL,
  2159. 3 - thread APC disable count
  2160. 4 - fast mutex address
  2161. 0x35 : kernel is releasing a spinlock when not at DISPATCH_LEVEL.
  2162. 2 - current IRQL,
  2163. 3 - spinlock address
  2164. 4 - old irql.
  2165. 0x36 : kernel is releasing a queued spinlock when not at DISPATCH_LEVEL.
  2166. 2 - current IRQL,
  2167. 3 - spinlock number,
  2168. 4 - old irql.
  2169. 0x37 : a resource is being acquired but APCs are not disabled.
  2170. 2 - current IRQL,
  2171. 3 - thread APC disable count,
  2172. 4 - resource.
  2173. 0x38 : a resource is being released but APCs are not disabled.
  2174. 2 - current IRQL,
  2175. 3 - thread APC disable count,
  2176. 4 - resource.
  2177. 0x39 : a mutex is being acquired unsafe, but irql is not APC_LEVEL on entry.
  2178. 2 - current IRQL,
  2179. 3 - thread APC disable count,
  2180. 4 - mutex.
  2181. 0x3A : a mutex is being released unsafe, but irql is not APC_LEVEL on entry.
  2182. 2 - current IRQL,
  2183. 3 - thread APC disable count,
  2184. 4 - mutex.
  2185. 0x3B : KeWaitXxx routine is being called at DISPATCH_LEVEL or higher.
  2186. 2 - current irql,
  2187. 3 - object to wait on,
  2188. 4 - time out parameter.
  2189. 0x3C : ObReferenceObjectByHandle is being called with a bad handle.
  2190. 2 - bad handle passed in,
  2191. 3 - object type,
  2192. 4 - 0.
  2193. 0x3D : ExAcquireResourceExclusive is being called with a bad (unaligned) resource.
  2194. 2 - 0
  2195. 3 - 0
  2196. 4 - bad resource address passed in.
  2197. 0x3E : KeLeaveCriticalRegion is being called for a thread that never entered a critical region.
  2198. 2 - 0
  2199. 3 - 0
  2200. 4 - 0
  2201. 0x3F : ObReferenceObject is being called on an object that has a reference count of zero or
  2202. ObDereferenceObject is being called on an object with a reference count of zero
  2203. 2 - Object address
  2204. 3 - new object reference count -1 = dereference case, 1 = reference case
  2205. 4 - 0
  2206. 0x40 : acquiring a spinlock when not at DISPATCH_LEVEL.
  2207. 2 - current IRQL,
  2208. 3 - spinlock address
  2209. 0x41 : releasing a spinlock when not at DISPATCH_LEVEL.
  2210. 2 - current IRQL,
  2211. 3 - spinlock address
  2212. 0x42 : acquiring a spinlock when caller is already above DISPATCH_LEVEL.
  2213. 2 - current IRQL,
  2214. 3 - spinlock address
  2215. 0x51 : freeing memory where the caller has written past the end of the
  2216. allocation, overwriting our stored bytecount.
  2217. 2 - base address of the allocation,
  2218. 3 - corrupt address,
  2219. 4 - charged bytes.
  2220. 0x52 : freeing memory where the caller has written past the end of the
  2221. allocation, overwriting our stored virtual address.
  2222. 2 - base address of the allocation,
  2223. 3 - hash entry,
  2224. 4 - charged bytes.
  2225. 0x53 : freeing memory where the caller has written past the end of the
  2226. allocation, overwriting our stored virtual address.
  2227. 2 - base address of the allocation,
  2228. 3 - header,
  2229. 4 - (reserved)
  2230. % 4 - internal verifier pointer.
  2231. 0x54 : freeing memory where the caller has written past the end of the
  2232. allocation, overwriting our stored virtual address.
  2233. 2 - base address of the allocation,
  2234. 3 - pool hash size,
  2235. 4 - listindex.
  2236. 0x59 : freeing memory where the caller has written past the end of the
  2237. allocation, overwriting our stored virtual address.
  2238. 2 - base address of the allocation,
  2239. 3 - listindex,
  2240. 4 - (reserved)
  2241. % 4 - internal verifier pointer.
  2242. 0x60 : A driver has forgotten to free its pool allocations prior to unloading.
  2243. 2 - paged bytes
  2244. 3 - nonpaged bytes,
  2245. 4 - total # of (paged+nonpaged) allocations that weren't freed.
  2246. To get the name of the driver at fault, type
  2247. dp ViBadDriver l1; dS @$p
  2248. Then type !verifier 3 drivername.sys for info on the allocations
  2249. that were leaked that caused the bugcheck.
  2250. 0x61 : A driver is unloading and allocating memory (in another thread) at the same time.
  2251. 2 - paged bytes
  2252. 3 - nonpaged bytes,
  2253. 4 - total # of (paged+nonpaged) allocations that weren't freed.
  2254. To get the name of the driver at fault, type
  2255. dp ViBadDriver l1; dS @$p
  2256. Then type !verifier 3 drivername.sys for info on the allocations
  2257. that were leaked that caused the bugcheck.
  2258. 0x6F : MmProbeAndLockPages called on pages not in PFN database. This
  2259. is typically a driver calling this routine to lock its own
  2260. private dualport RAM. Not only is this not needed, it can also
  2261. corrupt memory on machines with noncontiguous physical RAM.
  2262. 2 - MDL address
  2263. 3 - physical page being locked
  2264. 4 - highest physical page in the system
  2265. 0x70 : MmProbeAndLockPages called when not at DISPATCH_LEVEL or below.
  2266. 2 - current IRQL
  2267. 3 - MDL address
  2268. 4 - access mode
  2269. 0x71 : MmProbeAndLockProcessPages called when not at DISPATCH_LEVEL or below.
  2270. 2 - current IRQL
  2271. 3 - MDL address
  2272. 4 - process address
  2273. 0x72 : MmProbeAndLockSelectedPages called when not at DISPATCH_LEVEL or below.
  2274. 2 - current IRQL
  2275. 3 - MDL address
  2276. 4 - process address
  2277. 0x73 : MmMapIoSpace called when not at DISPATCH_LEVEL or below.
  2278. 2 - current IRQL
  2279. 3 - low 32 bits of the physical address (full 64 on Win64)
  2280. 4 - number of bytes
  2281. 0x74 : MmMapLockedPages called when not at DISPATCH_LEVEL or below.
  2282. 2 - current IRQL
  2283. 3 - MDL address
  2284. 4 - access mode
  2285. 0x75 : MmMapLockedPages called when not at APC_LEVEL or below.
  2286. 2 - current IRQL
  2287. 3 - MDL address
  2288. 4 - access mode
  2289. 0x76 : MmMapLockedPagesSpecifyCache called when not at DISPATCH_LEVEL or below.
  2290. 2 - current IRQL
  2291. 3 - MDL address
  2292. 4 - access mode
  2293. 0x77 : MmMapLockedPagesSpecifyCache called when not at APC_LEVEL or below.
  2294. 2 - current IRQL
  2295. 3 - MDL address
  2296. 4 - access mode
  2297. 0x78 : MmUnlockPages called when not at DISPATCH_LEVEL or below.
  2298. 2 - current IRQL
  2299. 3 - MDL address
  2300. 4 - 0
  2301. 0x79 : MmUnmapLockedPages called when not at DISPATCH_LEVEL or below.
  2302. 2 - current IRQL
  2303. 3 - virtual address being unmapped
  2304. 4 - MDL address
  2305. 0x7A : MmUnmapLockedPages called when not at APC_LEVEL or below.
  2306. 2 - current IRQL
  2307. 3 - virtual address being unmapped
  2308. 4 - MDL address
  2309. 0x7B : MmUnmapIoSpace called when not at APC_LEVEL or below.
  2310. 2 - current IRQL
  2311. 3 - virtual address being unmapped
  2312. 4 - number of bytes
  2313. 0x7C : MmUnlockPages called with an MDL whose pages were never
  2314. successfully locked.
  2315. 2 - MDL address
  2316. 3 - MDL flags
  2317. 4 - 0
  2318. 0x7D : MmUnlockPages called with an MDL whose pages are from nonpaged
  2319. pool - these should never be unlocked.
  2320. 2 - MDL address
  2321. 3 - MDL flags
  2322. 4 - 0
  2323. 0x80 : KeSetEvent called when not at DISPATCH_LEVEL or below.
  2324. 2 - current IRQL
  2325. 3 - event address
  2326. 4 - 0
  2327. 0x81 : MmMapLockedPages called without MDL_MAPPING_CAN_FAIL
  2328. 2 - MDL address
  2329. 3 - MDL flags
  2330. 4 - 0
  2331. 0x82 : MmMapLockedPagesSpecifyCache called without MDL_MAPPING_CAN_FAIL
  2332. 2 - MDL address
  2333. 3 - MDL flags
  2334. 4 - Whether to bugcheck on failure
  2335. 0x83 : MmMapIoSpace called to map, but the caller hasn't locked down the MDL pages.
  2336. 2 - Starting physical address to map.
  2337. 3 - Number of bytes to map.
  2338. 4 - The first page frame number that isn't locked down.
  2339. 0x84 : MmMapIoSpace called to map, but the caller hasn't locked down the MDL pages.
  2340. 2 - Starting physical address to map.
  2341. 3 - Number of bytes to map.
  2342. 4 - The first page frame number that is on the free list.
  2343. 0x85 : MmMapLockedPages called to map, but the caller hasn't locked down the MDL pages.
  2344. 2 - MDL address.
  2345. 3 - Number of pages to map.
  2346. 4 - The first page frame number that isn't locked down.
  2347. 0x86 : MmMapLockedPages called to map, but the caller hasn't locked down the MDL pages.
  2348. 2 - MDL address.
  2349. 3 - Number of pages to map.
  2350. 4 - The first page frame number that is on the free list.
  2351. 0x87 : MmMapIoSpace called to map, but the caller's cachetype conflicts with an already existing mapping.
  2352. 2 - Base physical page (shift left for physical address) of the existing (conflicting) mapping.
  2353. 3 - Number of pages already mapped in the existing (conflicting) mapping.
  2354. 4 - MEMORY_CACHING_TYPE of the existing (conflicting mapping).
  2355. 0x88 : MmMapIoSpace called to map a physical range as noncached or writecombined, but the caller's physical range already has an existing cached mapping.
  2356. 2 - Base physical page (shift left for physical address) of the requested mapping.
  2357. 3 - Number of pages in the requested mapping.
  2358. 4 - MEMORY_CACHING_TYPE of the requested mapping.
  2359. 0x89 : An MDL is not marked as I/O but contains non-memory page addresses.
  2360. 2 - MDL address.
  2361. 3 - Pointer to the non-memory page in the MDL.
  2362. 4 - The non-memory page number in the MDL.
  2363. 0x8A : MmMapLockedPages* called to map a physical range as noncached or writecombined, but the caller's physical range already has an existing cached mapping.
  2364. 2 - MDL address.
  2365. 3 - Conflicting physical page (shift left for physical address) of the requested mapping.
  2366. 4 - MEMORY_CACHING_TYPE of the requested mapping.
  2367. 0x90 : A driver switched stacks. The current stack is neither a thread
  2368. stack nor a DPC stack. Typically the driver doing this should be
  2369. on the stack obtained from `kb' command.
  2370. 0xA0 : A CRC error was detected on the sector (synchronously).
  2371. 2 - Request Irp.
  2372. 3 - Device object of the lower device.
  2373. 4 - Sector number on which the CRC error was detected.
  2374. 0xA1 : A CRC error was detected on the sector (asynchronously).
  2375. 2 - *COPY* of original Irp (actual irp has been completed)
  2376. 3 - Device object of the lower device.
  2377. 4 - Sector number on which the CRC error was detected.
  2378. 0xA2 : CRCDISK checksum copies don't match (possible paging error)
  2379. 2 - Request Irp or copy.
  2380. 3 - Device object of the lower device.
  2381. 4 - Sector number on which the CRC error was detected.
  2382. END_VALUES
  2383. DESCRIPTION
  2384. Parameter 1 = 0x1000 .. 0x1020 - deadlock verifier error codes.
  2385. Typically the code is 0x1001 (deadlock detected) and you can
  2386. issue a '!deadlock' KD command to get more information.
  2387. % Please consult also the FAQ about the deadlock verifier
  2388. % on http://stressweb/dbginfo.htm, or see the DDK docs.
  2389. DRIVER_CORRUPTED_EXPOOL (0xC5)
  2390. PARAMETERS
  2391. 1 - memory referenced
  2392. 2 - IRQL
  2393. 3 - value 0 = read operation, 1 = write operation
  2394. 4 - address which referenced memory
  2395. DESCRIPTION
  2396. An attempt was made to access a pagable (or completely invalid) address at an
  2397. interrupt request level (IRQL) that is too high. This is
  2398. caused by drivers that have corrupted the system pool. Run the driver
  2399. verifier against any new (or suspect) drivers, and if that doesn't turn up
  2400. the culprit, then use gflags to enable special pool.
  2401. DRIVER_CAUGHT_MODIFYING_FREED_POOL (0xC6)
  2402. PARAMETERS
  2403. 1 - memory referenced
  2404. 2 - value 0 = read operation, 1 = write operation
  2405. 3 - previous mode.
  2406. 4 - 4.
  2407. DESCRIPTION
  2408. An attempt was made to access freed pool memory. The faulty component is
  2409. displayed in the current kernel stack.
  2410. TIMER_OR_DPC_INVALID (0xC7)
  2411. A kernel timer or DPC was found in memory which must not contain such items.
  2412. Usually this is memory being freed. This is usually caused by a device driver
  2413. that has not cleaned up properly before freeing memory.
  2414. PARAMETERS
  2415. 1 - What kind of object
  2416. 0 Timer Object
  2417. 1 DPC Object
  2418. 2 DPC Routine
  2419. 2 - Address of object
  2420. 3 - Start of range being checked
  2421. 4 - End of range being checked
  2422. IRQL_UNEXPECTED_VALUE (0xC8)
  2423. The processor's IRQL is not what it should be at this time. This is
  2424. usually caused by a lower level routine changing IRQL for some period
  2425. and not restoring IRQL at the end of that period (eg acquires spinlock
  2426. but doesn't release it).
  2427. PARAMETERS
  2428. 1 - (Current IRQL << 16) | (Expected IRQL << 8) | UniqueValue
  2429. DESCRIPTION
  2430. if UniqueValue is 0 or 1
  2431. 2 = APC->KernelRoutine
  2432. 3 = APC
  2433. 4 = APC->NormalRoutine
  2434. DRIVER_VERIFIER_IOMANAGER_VIOLATION (0xC9)
  2435. The IO manager has caught a misbehaving driver.
  2436. PARAMETERS
  2437. 1 - Code that specifies the violation
  2438. VALUES:
  2439. 1 : Invalid IRP passed to IoFreeIrp
  2440. 2 - the IRP passed in , 3/4 - 0
  2441. 2 : IRP still associated with a thread at IoFreeIrp
  2442. 2 - the IRP passed in , 3/4 - 0
  2443. 3 : Invalid IRP passed to IoCallDriver
  2444. 2 - the IRP passed in , 3/4 - 0
  2445. 4 : Invalid Device object passed to IoCallDriver
  2446. 2 - the Device object , 3/4 - 0
  2447. 5 : Irql not equal across call to the driver dispatch routine
  2448. 2 - the device object associated with the offending driver
  2449. 3 - the Irql before the call
  2450. 4 - the Irql after the call
  2451. 6 : IRP passed to IoCompleteRequest contains invalid status
  2452. 2 - the status
  2453. 3 - the IRP
  2454. 4 - 0
  2455. 7 : IRP passed to IoCompleteRequest still has cancel routine set
  2456. 2 - the cancel routine pointer
  2457. 3 - the IRP
  2458. 4 - 0
  2459. 8 : Call to IoBuildAsynchronousFsdRequest threw an exception
  2460. 2 - the Device object
  2461. 3 - the IRP major function
  2462. 4 - the exception status
  2463. 9 : Call to IoBuildDeviceIoControlRequest threw an exception
  2464. 2 - the Device object
  2465. 3 - the IoControlCode
  2466. 4 - the exception status
  2467. 0xA : Reinitialization of Device object timer
  2468. 2 - the Device object , 3/4 - 0
  2469. 0xB : Unused
  2470. 0xC : Invalid IOSB in IRP at APC IopCompleteRequest (appears to be on
  2471. stack that was unwound)
  2472. 2 - the IOSB pointer , 3/4 - 0
  2473. 0xD : Invalid UserEvent in IRP at APC IopCompleteRequest (appears to
  2474. be on stack that was unwound)
  2475. 2 - the UserEvent pointer , 3/4 - 0
  2476. 0xE : Irql > DPC at IoCompleteRequest
  2477. 2 - the current Irql
  2478. 3 - the IRP
  2479. 4 - 0
  2480. 0xF : Driver sent an create request with fileobject that's been closed or had its open cancelled.
  2481. 1 - Device Object to which the IRP is being sent
  2482. 2 - Pointer to IRP
  2483. 3 - Pointer to FileObject
  2484. % The following table lists additional I/O Verification errors that can appear in
  2485. % Windows 2000 and later. In Windows 2000, these errors will only be displayed
  2486. % if Level 2 I/O Verification is activated.
  2487. 0x200 : (Unknown) This code covers all unknown I/O Verification errors.
  2488. 2 - The address in the driver's code where the error was detected.
  2489. 3 - A pointer to the IRP.
  2490. 4 - A pointer to the DeviceObject.
  2491. 0x201 : (Fatal error) A device is deleting itself while there is another device
  2492. beneath it in the driver stack. This may be because the caller has forgotten to call
  2493. IoDetachDevice first, or the lower driver may have incorrectly deleted itself.
  2494. 0x202 : (Fatal error) A driver has attempted to detach from a device object that
  2495. is not attached to anything. This may occur if detach was called twice on the same
  2496. device object. (Device object specified.)
  2497. 0x203 : (Fatal error) A driver has called IoCallDriver without setting the
  2498. CancelRoutine in the IRP to NULL. (IRP specified.)
  2499. 0x204 : (Fatal error) The caller has passed in NULL as a DeviceObject. This
  2500. is fatal. (IRP specified.)
  2501. 0x205 : (Fatal error) The caller is forwarding an IRP that is currently queued beneath
  2502. it. The code handling IRPs returning STATUS_PENDING in this driver appears to be
  2503. broken. (IRP specified.)
  2504. 0x206 : (Fatal error) The caller has incorrectly forwarded an IRP (control field
  2505. not zeroed). The driver should use IoCopyCurrentIrpStackLocationToNext or
  2506. IoSkipCurrentIrpStackLocation. (IRP specified.)
  2507. 0x207 : (Fatal error) The caller has manually copied the stack and has inadvertently
  2508. copied the upper layer's completion routine. Please use
  2509. IoCopyCurrentIrpStackLocationToNext. (IRP specified.)
  2510. 0x208 : (Fatal error) This IRP is about to run out of stack locations. Someone
  2511. may have forwarded this IRP from another stack. (IRP specified.)
  2512. 0x209 : (Fatal error) The caller is completing an IRP that is currently queued
  2513. beneath it. The code handling IRPs returning STATUS_PENDING in this driver appears
  2514. to be broken. (IRP specified.)
  2515. 0x20A : (Fatal error) The caller of IoFreeIrp is freeing an IRP that is still
  2516. in use. (Original IRP and IRP in use specified.)
  2517. 0x20B : (Fatal error) The caller of IoFreeIrp is freeing an IRP that is still
  2518. in use. (IRP specified.)
  2519. 0x20C : (Fatal error) The caller of IoFreeIrp is freeing an IRP that is still
  2520. queued against a thread. (IRP specified.)
  2521. 0x20D : (Fatal error) The caller of IoInitializeIrp has passed an IRP that was
  2522. allocated with IoAllocateIrp. This is illegal and unnecessary, and has caused
  2523. a quota leak. Check the documentation for IoReuseIrp if this IRP is being recycled.
  2524. 0x20E : (Non-fatal error) A PNP IRP has an invalid status. (Any PNP IRP must
  2525. have its status initialized to STATUS_NOT_SUPPORTED.) (IRP specified.)
  2526. 0x20F : (Non-fatal error) A Power IRP has an invalid status. (Any Power IRP
  2527. must have its status initialized to STATUS_NOT_SUPPORTED.) (IRP specified.)
  2528. 0x210 : (Non-fatal error) A WMI IRP has an invalid status. (Any WMI IRP must
  2529. have its status initialized to STATUS_NOT_SUPPORTED.) (IRP specified.)
  2530. 0x211 : (Non-fatal error) The caller has forwarded an IRP while skipping a device
  2531. object in the stack. The caller is probably sending IRPs to the PDO instead of
  2532. to the device returned by IoAttachDeviceToDeviceStack. (IRP specified.)
  2533. 0x212 : (Non-fatal error) The caller has trashed or has not properly copied the
  2534. IRP's stack. (IRP specified.)
  2535. 0x213 : (Non-fatal error) The caller has changed the status field of an IRP it
  2536. does not understand. (IRP specified.)
  2537. 0x214 : (Non-fatal error) The caller has changed the information field of an
  2538. IRP it does not understand. (IRP specified.)
  2539. 0x215 : (Non-fatal error) A non-successful non-STATUS_NOT_SUPPORTED IRP status
  2540. for IRP_MJ_PNP is being passed down stack. (IRP specified.) Failed PNP IRPs
  2541. must be completed.
  2542. 0x216 : (Non-fatal error) The previously-set IRP_MJ_PNP status has been converted
  2543. to STATUS_NOT_SUPPORTED. (IRP specified.)
  2544. 0x217 : (Non-fatal error) The driver has not handled a required IRP. The driver must
  2545. update the status of the IRP to indicate whether or not it has been handled.
  2546. (IRP specified.)
  2547. 0x218 : (Non-fatal error) The driver has responded to an IRP that is reserved for
  2548. other device objects elsewhere in the stack. (IRP specified.)
  2549. 0x219 : (Non-fatal error) A non-successful non-STATUS_NOT_SUPPORTED IRP status for
  2550. IRP_MJ_POWER is being passed down stack. (IRP specified.) Failed POWER IRPs must be
  2551. completed.
  2552. 0x21A : (Non-fatal error) The previously-set IRP_MJ_POWER status has been converted
  2553. to STATUS_NOT_SUPPORTED. (IRP specified.)
  2554. 0x21B : (Non-fatal error) A driver has returned a suspicious status. This is probably
  2555. due to an uninitialized variable bug in the driver. (IRP specified.)
  2556. 0x21C : (Warning) The caller has copied the IRP stack but not set a completion routine.
  2557. This is inefficient -- use IoSkipCurrentIrpStackLocation instead. (IRP specified.)
  2558. 0x21D : (Fatal error) An IRP dispatch handler has not properly detached from the
  2559. stack below it upon receiving a remove IRP. (DeviceObject, Dispatch
  2560. Routine, and IRP specified.)
  2561. 0x21E : (Fatal error) An IRP dispatch handler has not properly deleted its device object
  2562. upon receiving a remove IRP. (DeviceObject, Dispatch Routine, and IRP specified.)
  2563. 0x21F : (Non-fatal error) A driver has not filled out a dispatch routine for a required
  2564. IRP major function. (IRP specified.)
  2565. 0x220 : (Non-fatal error) IRP_MJ_SYSTEM_CONTROL has been completed by someone other than
  2566. the ProviderId. This IRP should either have been completed earlier or should have
  2567. been passed down. (IRP specified, along with the DeviceObject where it was targeted.)
  2568. 0x221 : (Fatal error) An IRP dispatch handler for a PDO has deleted its device object,
  2569. but the hardware has not been reported as missing in a bus relations query.
  2570. (DeviceObject, Dispatch Routine, and IRP specified.)
  2571. 0x222 : (Fatal error) A Bus Filter's IRP dispatch handler has detached upon receiving
  2572. a remove IRP when the PDO is still alive. Bus Filters must clean up in
  2573. FastIoDetach callbacks. (DeviceObject, Dispatch Routine, and IRP specified.)
  2574. 0x223 : (Fatal error) An IRP dispatch handler for a bus filter has deleted its device
  2575. object, but the PDO is still present. Bus filters must clean up in
  2576. FastIoDetach callbacks. (DeviceObject, Dispatch Routine, and IRP specified.)
  2577. 0x224 : (Fatal error) An IRP dispatch handler has returned a status that is inconsistent
  2578. with the IRP's IoStatus.Status field. (Dispatch handler routine, IRP, IRP's
  2579. IoStatus.Status, and returned Status specified.)
  2580. 0x225 : (Non-fatal error) An IRP dispatch handler has returned a status that is illegal
  2581. (0xFFFFFFFF). This is probably due to an uninitialized stack variable. To debug
  2582. this, execute an LN command on the specified address.
  2583. 0x226 : (Fatal error) An IRP dispatch handler has returned without passing down or
  2584. completing this IRP, or someone forgot to return STATUS_PENDING. (IRP specified.)
  2585. 0x227 : (Fatal error) An IRP completion routine is in pageable code. (This is never
  2586. permitted.) (Routine and IRP specified.)
  2587. 0x228 : (Non-fatal error) A driver's completion routine has not marked the IRP pending if
  2588. the PendingReturned field was set in the IRP passed to it. This may cause the
  2589. OS to hang, especially if an error is returned by the stack. (Routine and IRP specified.)
  2590. 0x229 : (Fatal error) A cancel routine has been set for an IRP that is currently being
  2591. processed by drivers lower in the stack, possibly stomping their cancel routine.
  2592. (Routine and IRP specified.)
  2593. 0x22A : (Non-fatal error) The physical device object (PDO) has not responded to a
  2594. required IRP. (IRP specified.)
  2595. 0x22B : (Non-fatal error) The physical device object (PDO) has forgotten to fill out the
  2596. device relation list with the PDO for the TargetDeviceRelation query. (IRP specified.)
  2597. 0x22C : (Fatal error) The code implementing the TargetDeviceRelation query has not called
  2598. ObReferenceObject on the PDO. (IRP specified.)
  2599. 0x22D : (Non-fatal error) The caller has completed a IRP_MJ_PNP it didn't understand
  2600. instead of passing it down. (IRP specified.)
  2601. 0x22E : (Non-fatal error) The caller has completed a successful IRP_MJ_PNP instead of
  2602. passing it down. (IRP specified.)
  2603. 0x22F : (Non-fatal error) The caller has completed an untouched IRP_MJ_PNP (instead of
  2604. passing the IRP down), or non-PDO has failed the IRP using illegal value of
  2605. STATUS_NOT_SUPPORTED. (IRP specified.)
  2606. 0x230 : (Non-fatal error) The caller has completed an IRP_MJ_POWER it didn't understand
  2607. instead of passing it down. (IRP specified.)
  2608. 0x231 : (Fatal error) The caller has completed a successful IRP_MJ_POWER instead of passing
  2609. it down. (IRP specified.)
  2610. 0x232 : (Non-fatal error) The caller has completed an untouched IRP_MJ_POWER (instead of
  2611. passing the IRP down), or non-PDO has failed the IRP using illegal value of
  2612. STATUS_NOT_SUPPORTED. (IRP specified.)
  2613. 0x233 : (Non-fatal error) The version field of the query capabilities structure in a query
  2614. capabilities IRP was not properly initialized. (IRP specified.)
  2615. 0x234 : (Non-fatal error) The size field of the query capabilities structure in a query
  2616. capabilities IRP was not properly initialized. (IRP specified.)
  2617. 0x235 : (Non-fatal error) The address field of the query capabilities structure in a query
  2618. capabilities IRP was not properly initialized to -1. (IRP specified.)
  2619. 0x236 : (Non-fatal error) The UI Number field of the query capabilities structure in a
  2620. query capabilities IRP was not properly initialized to -1. (IRP specified.)
  2621. 0x237 : (Fatal error) A driver has sent an IRP that is restricted for system use only. (IRP specified.)
  2622. 0x238 : (Warning) The caller of IoInitializeIrp has passed an IRP that was allocated with
  2623. IoAllocateIrp. This is illegal, unnecessary, and negatively impacts performance in normal
  2624. use. Check the documentation for IoReuseIrp if this IRP is being recycled.
  2625. 0x239 : (Warning) The caller of IoCompleteRequest is completing an IRP that has never
  2626. been forwarded via a call to IoCallDriver or PoCallDriver. This may be
  2627. a bug. (IRP specified.)
  2628. 0x23A : (Fatal error) A driver has forwarded an IRP at an IRQL that is illegal for
  2629. this major code. (IRP specified.)
  2630. 0x23B : (Non-fatal error) The caller has changed the status field of an IRP it does not
  2631. understand. (IRP specified.)
  2632. % The following table lists additional I/O Verification errors that can appear in
  2633. % Windows XP and later. Some of these errors will only be revealed if Enhanced I/O
  2634. % Verification is activated.
  2635. 0x23C : (Fatal error) A driver has completed an IRP without setting the cancel
  2636. routine in the IRP to NULL. (IRP specified.)
  2637. 0x23D : (Non-fatal error) A driver has returned STATUS_PENDING but did not mark the IRP
  2638. pending via a call to IoMarkIrpPending. (IRP specified.)
  2639. 0x23E : (Non-fatal error) A driver has marked an IRP pending but didn't return
  2640. STATUS_PENDING. (IRP specified.)
  2641. 0x23F : (Fatal error) A driver has not inherited the DO_POWER_PAGABLE bit from the
  2642. stack it has attached to. (DeviceObject specified.)
  2643. 0x240 : (Fatal error) A driver is attempting to delete a device object that has already
  2644. been deleted via a prior call to IoDeleteDevice.
  2645. 0x241 : (Fatal error) A driver has detached its device object during a surprise remove
  2646. IRP. (IRP and DeviceObject specified.)
  2647. 0x242 : (Fatal error) A driver has deleted its device object during a surprise remove
  2648. IRP. (IRP and DeviceObject specified.)
  2649. 0x243 : (Fatal error) A driver has failed to clear the DO_DEVICE_INITIALIZING flag at
  2650. the end of AddDevice. (DeviceObject specified.)
  2651. 0x244 : (Fatal error) A driver has not copied either the DO_BUFFERED_IO or the
  2652. DO_DIRECT_IO flag from the device object it is attaching
  2653. to. (DeviceObject specified.)
  2654. 0x245 : (Fatal error) A driver has set both the DO_BUFFERED_IO and the DO_DIRECT_IO
  2655. flags. These flags are mutually exclusive. (DeviceObject specified.)
  2656. 0x246 : (Fatal error) A driver has failed to copy the DeviceType field from the device
  2657. object it is attaching to. (DeviceObject specified.)
  2658. 0x247 : (Fatal error) A driver has failed an IRP that cannot legally be failed. (IRP specified.)
  2659. 0x248 : (Fatal error) A driver has added a device object that is not a PDO to a device
  2660. relations query. (IRP and DeviceObject specified.)
  2661. 0x249 : (Non-fatal error) A driver has enumerated two child PDOs that returned identical
  2662. Device IDs. (Both DeviceObjects specified.)
  2663. 0x24A : (Fatal error) A driver has mistakenly called a file I/O function at an IRQL
  2664. other than PASSIVE_LEVEL.
  2665. 0x24B : (Fatal error) A driver has succeeded IRP_MJ_PNP.IRP_MN_QUERY_DEVICE_RELATIONS(TargetRelations)
  2666. but did not properly fill out the request or forward the IRP to the underlying
  2667. hardware stack. (DeviceObject specified.)
  2668. 0x24C : (Non-fatal error) A driver has returned STATUS_PENDING but did not mark the
  2669. IRP pending via a call to IoMarkIrpPending. (IRP specified.)
  2670. 0x24D : (Fatal error) A driver has passed an invalid device object to a function that
  2671. requires a PDO. (DeviceObject specified.)
  2672. END_VALUES
  2673. PNP_DETECTED_FATAL_ERROR (0xCA)
  2674. PnP encountered a severe error, either as a result of a problem in a driver or
  2675. a problem in PnP itself. The first argument describes the nature of the
  2676. problem, the second argument is the address of the PDO. The other arguments
  2677. vary depending on argument 1.
  2678. PARAMETERS
  2679. Argument 1 -
  2680. VALUES:
  2681. 1 : Duplicate PDO
  2682. A specific instance of a driver has enumerated multiple PDOs with
  2683. identical device id and unique ids.
  2684. 2 - Newly reported PDO.
  2685. 3 - PDO of which it is a duplicate.
  2686. 2 : Invalid PDO
  2687. An API which requires a PDO has been called with either an FDO,
  2688. a PDO which hasn't been initialized yet (returned to PnP in a
  2689. QueryDeviceRelation/BusRelations), or some random piece of
  2690. memory.
  2691. 2 - Purported PDO.
  2692. 3 - Driver object
  2693. 3 : Invalid ID
  2694. An enumerator has returned an ID which contains illegal
  2695. characters or isn't properly terminated. IDs must only contain
  2696. characters in the range 0x20-7F inclusive with the exception of
  2697. 0x2C (comma) which is illegal.
  2698. 2 - PDO whose IDs were queried
  2699. 3 - Address of ID buffer
  2700. 4 - Type of ID
  2701. VALUES
  2702. 1 : DeviceID
  2703. 2 : UniqueID
  2704. 3 : HardwareIDs
  2705. 4 : CompatibleIDs
  2706. END_VALUES
  2707. 4 : Invalid enumeration of deleted PDO
  2708. An enumerator has returned a PDO which it has previously deleted
  2709. using IoDeleteDevice.
  2710. 2 - PDO with DOE_DELETE_PENDING set.
  2711. 5 : PDO freed while still linked in devnode tree.
  2712. The object manager reference count on a PDO dropped to zero
  2713. while the devnode was still linked in the tree. This usually
  2714. indicates that the driver is not adding a reference when
  2715. returning the PDO in a query IRP.
  2716. 2 - PDO.
  2717. END_VALUES
  2718. DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS (0xCB)
  2719. PARAMETERS
  2720. 1 - The calling address in the driver that locked the pages or if the
  2721. IO manager locked the pages this points to the dispatch routine of
  2722. the top driver on the stack to which the IRP was sent.
  2723. 2 - The caller of the calling address in the driver that locked the
  2724. pages. If the IO manager locked the pages this points to the device
  2725. object of the top driver on the stack to which the IRP was sent.
  2726. 3 - A pointer to the MDL containing the locked pages.
  2727. 4 - The number of locked pages.
  2728. DESCRIPTION
  2729. Caused by a driver not cleaning up completely after an I/O.
  2730. When possible, the guilty driver's name (Unicode string) is printed on
  2731. the bugcheck screen and saved in KiBugCheckDriver.
  2732. PAGE_FAULT_IN_FREED_SPECIAL_POOL (0xCC)
  2733. PARAMETERS
  2734. 1 - memory referenced
  2735. 2 - value 0 = read operation, 1 = write operation
  2736. 3 - if non-zero, the address which referenced memory.
  2737. 4 - Mm internal code.
  2738. DESCRIPTION
  2739. Memory was referenced after it was freed.
  2740. This cannot be protected by try-except.
  2741. When possible, the guilty driver's name (Unicode string) is printed on
  2742. the bugcheck screen and saved in KiBugCheckDriver.
  2743. PAGE_FAULT_BEYOND_END_OF_ALLOCATION (0xCD)
  2744. PARAMETERS
  2745. 1 - memory referenced
  2746. 2 - value 0 = read operation, 1 = write operation
  2747. 3 - if non-zero, the address which referenced memory.
  2748. 4 - Mm internal code.
  2749. DESCRIPTION
  2750. N bytes of memory was allocated and more than N bytes are being referenced.
  2751. This cannot be protected by try-except.
  2752. When possible, the guilty driver's name (Unicode string) is printed on
  2753. the bugcheck screen and saved in KiBugCheckDriver.
  2754. DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS (0xCE)
  2755. A driver unloaded without cancelling timers, DPCs, worker threads, etc.
  2756. The broken driver's name is displayed on the screen.
  2757. PARAMETERS
  2758. 1 - memory referenced
  2759. 2 - value 0 = read operation, 1 = write operation
  2760. 3 - If non-zero, the instruction address which referenced the bad memory
  2761. address.
  2762. 4 - Mm internal code.
  2763. TERMINAL_SERVER_DRIVER_MADE_INCORRECT_MEMORY_REFERENCE (0xCF)
  2764. PARAMETERS
  2765. 1 - memory referenced
  2766. 2 - value 0 = read operation, 1 = write operation
  2767. 3 - If non-zero, the instruction address which referenced the bad memory
  2768. address.
  2769. 4 - Mm internal code.
  2770. A driver has been incorrectly ported to Terminal Server. It is referencing
  2771. session space addresses from the system process context. Probably from
  2772. queueing an item to a system worker thread.
  2773. The broken driver's name is displayed on the screen.
  2774. DRIVER_CORRUPTED_MMPOOL (0xD0)
  2775. PARAMETERS
  2776. 1 - memory referenced
  2777. 2 - IRQL
  2778. 3 - value 0 = read operation, 1 = write operation
  2779. 4 - address which referenced memory
  2780. An attempt was made to access a pagable (or completely invalid) address at an
  2781. interrupt request level (IRQL) that is too high. This is
  2782. caused by drivers that have corrupted the system pool. Run the driver
  2783. verifier against any new (or suspect) drivers, and if that doesn't turn up
  2784. the culprit, then use gflags to enable special pool. You can also set
  2785. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\ProtectNonPagedPool
  2786. to a DWORD 1 value and reboot. Then the system will unmap freed nonpaged pool,
  2787. preventing drivers (although not DMA-hardware) from corrupting the pool.
  2788. DRIVER_IRQL_NOT_LESS_OR_EQUAL (0xD1)
  2789. PARAMETERS
  2790. 1 - memory referenced
  2791. 2 - IRQL
  2792. 3 - value 0 = read operation, 1 = write operation
  2793. 4 - address which referenced memory
  2794. DESCRIPTION
  2795. An attempt was made to access a pagable (or completely invalid) address at an
  2796. interrupt request level (IRQL) that is too high. This is usually
  2797. caused by drivers using improper addresses.
  2798. If kernel debugger is available get stack backtrace.
  2799. BUGCODE_ID_DRIVER (0xD2)
  2800. This is the NDIS Driver Bugcheck for Windows 2000 and Windows XP.
  2801. For Windows Server 2003 and later, see 0x7C, BUGCODE_NDIS_DRIVER.
  2802. DESCRIPTION
  2803. The meaning of the bug check parameters cannot be determined by examining the
  2804. parameters alone. You must also examine the text of a DbgPrint message.
  2805. For details, see either the debugger documentation or the DDK documentation.
  2806. DRIVER_PORTION_MUST_BE_NONPAGED (0xD3)
  2807. PARAMETERS
  2808. 1 - memory referenced
  2809. 2 - IRQL
  2810. 3 - value 0 = read operation, 1 = write operation
  2811. 4 - address which referenced memory
  2812. DESCRIPTION
  2813. When possible, the guilty driver's name (Unicode string) is printed on
  2814. the bugcheck screen and saved in KiBugCheckDriver.
  2815. An attempt was made to access a pagable (or completely invalid) address at an
  2816. interrupt request level (IRQL) that is too high. This is usually
  2817. caused by drivers marking code or data as pagable when it should be
  2818. marked nonpaged.
  2819. If kernel debugger is available get stack backtrace.
  2820. SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD (0xD4)
  2821. A driver unloaded without cancelling lookaside lists, DPCs, worker threads, etc.
  2822. The broken driver's name is displayed on the screen.
  2823. PARAMETERS
  2824. 1 - memory referenced
  2825. 2 - IRQL
  2826. 3 - value 0 = read operation, 1 = write operation
  2827. 4 - address which referenced memory
  2828. DESCRIPTION
  2829. When possible, the guilty driver's name (Unicode string) is printed on
  2830. the bugcheck screen and saved in KiBugCheckDriver.
  2831. An attempt was made to access the driver at raised IRQL after it unloaded.
  2832. If kernel debugger is available get stack backtrace.
  2833. DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL (0xD5)
  2834. PARAMETERS
  2835. 1 - memory referenced
  2836. 2 - value 0 = read operation, 1 = write operation
  2837. 3 - if non-zero, the address which referenced memory.
  2838. 4 - (reserved)
  2839. % 4 - Mm internal code.
  2840. DESCRIPTION
  2841. Memory was referenced after it was freed.
  2842. This cannot be protected by try-except.
  2843. When possible, the guilty driver's name (Unicode string) is printed on
  2844. the bugcheck screen and saved in KiBugCheckDriver.
  2845. DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION (0xD6)
  2846. PARAMETERS
  2847. 1 - memory referenced
  2848. 2 - value 0 = read operation, 1 = write operation
  2849. 3 - if non-zero, the address which referenced memory.
  2850. 4 - (reserved)
  2851. % 4 - Mm internal code.
  2852. DESCRIPTION
  2853. N bytes of memory was allocated and more than N bytes are being referenced.
  2854. This cannot be protected by try-except.
  2855. When possible, the guilty driver's name (Unicode string) is printed on
  2856. the bugcheck screen and saved in KiBugCheckDriver.
  2857. DRIVER_UNMAPPING_INVALID_VIEW (0xD7)
  2858. PARAMETERS
  2859. 1 - virtual address to unmap.
  2860. 2 - 1 if the view is being unmapped, 2 if the view is being committed.
  2861. 3 - 0.
  2862. 4 - 0.
  2863. DESCRIPTION
  2864. A driver (usually win32k.sys, but can be determined from the stack trace for
  2865. certain) is trying to unmap an address that was not mapped.
  2866. DRIVER_USED_EXCESSIVE_PTES (0xD8)
  2867. PARAMETERS
  2868. 1 - If non-null, the guilty driver's name (Unicode string).
  2869. 2 - If parameter 1 non-null, the number of PTEs used by the guilty driver.
  2870. 3 - Total free system PTEs
  2871. 4 - Total system PTEs
  2872. DESCRIPTION
  2873. No System PTEs left. Usually caused by a driver not cleaning up
  2874. properly. If non-null, Parameter 1 shows the name of the driver
  2875. who is consuming the most PTEs. The calling stack also shows the name of
  2876. the driver which bugchecked. Both drivers need to be fixed and/or the number
  2877. of PTEs increased.
  2878. When possible, the guilty driver's name (Unicode string) is printed on
  2879. the bugcheck screen and saved in KiBugCheckDriver.
  2880. LOCKED_PAGES_TRACKER_CORRUPTION (0xD9)
  2881. PARAMETERS
  2882. 1 - Type of error.
  2883. VALUES:
  2884. 1 : The MDL is being inserted twice on the same process list.
  2885. 2 - Address of internal lock tracking structure.
  2886. 3 - Address of memory descriptor list.
  2887. 4 - Number of pages locked for the current process.
  2888. 2 : The MDL is being inserted twice on the systemwide list.
  2889. 2 - Address of internal lock tracking structure.
  2890. 3 - Address of memory descriptor list.
  2891. 4 - Number of pages locked for the current process.
  2892. 3 : The MDL was found twice in the process list when being freed.
  2893. Arguments:
  2894. 2 - Address of first internal tracking structure found.
  2895. 3 - Address of internal lock tracking structure.
  2896. 4 - Address of memory descriptor list.
  2897. 4 : The MDL was found in the systemwide list on free after it was removed.
  2898. 2 - Address of internal lock tracking structure.
  2899. 3 - Address of memory descriptor list.
  2900. 4 - 0.
  2901. END_VALUES
  2902. SYSTEM_PTE_MISUSE (0xDA)
  2903. The stack trace identifies the guilty driver.
  2904. PARAMETERS
  2905. 1 - Type of error.
  2906. VALUES:
  2907. 1 : The PTE mapping being freed is a duplicate.
  2908. 2 - Address of internal lock tracking structure.
  2909. 3 - Address of memory descriptor list.
  2910. 4 - Address of duplicate internal lock tracking structure.
  2911. 2 : The number of PTE mappings being freed is incorrect.
  2912. 2 - Address of internal lock tracking structure.
  2913. 3 - Number of PTEs the system thinks should be freed.
  2914. 4 - Number of PTEs the driver is requesting to free.
  2915. 3 : The PTE mapping address being freed is incorrect.
  2916. 2 - Address of first internal tracking structure found.
  2917. 3 - The PTE address the system thinks should be freed.
  2918. 4 - The PTE address the driver is requesting to free.
  2919. 4 : The first page of the mapped MDL has changed since the MDL was mapped.
  2920. 2 - Address of internal lock tracking structure.
  2921. 3 - Page frame number the system thinks should be first in the MDL.
  2922. 4 - Page frame number that is currently first in the MDL.
  2923. 5 : The start virtual address in the MDL being freed has changed since
  2924. the MDL was mapped.
  2925. 2 - Address of first internal tracking structure found.
  2926. 3 - The virtual address the system thinks should be freed.
  2927. 4 - The virtual address the driver is requesting to free.
  2928. 6 : The MDL being freed was never (or is currently not) mapped.
  2929. 2 - The MDL specified by the driver.
  2930. 3 - The virtual address specified by the driver.
  2931. 4 - The number of PTEs to free (specified by the driver).
  2932. 7 : The PTE range is being double allocated.
  2933. 2 - Starting PTE.
  2934. 3 - Number of PTEs.
  2935. 4 - Caller Id (system internal).
  2936. 8 : The caller is asking to free an incorrect number of PTEs.
  2937. 2 - Starting PTE.
  2938. 3 - Number of PTEs the caller is freeing.
  2939. 4 - Number of PTEs the system thinks should be freed.
  2940. 9 : The caller is asking to free PTEs where one of them is not allocated.
  2941. 2 - Starting PTE.
  2942. 3 - Number of PTEs the caller is freeing.
  2943. 4 - PTE index that the system thinks is already free.
  2944. 0xA : The caller is asking to allocate 0 PTEs.
  2945. 2 - Whether the driver requested "bugcheck on failure" in the MDL.
  2946. 3 - Number of PTEs the caller is allocating.
  2947. 4 - Type of PTE pool requested.
  2948. 0xB : The PTE list is already corrupted at the time of this allocation.
  2949. The corrupt PTE is below the lowest possible PTE address.
  2950. 2 - Corrupt PTE.
  2951. 3 - Number of PTEs the caller is allocating.
  2952. 4 - Type of PTE pool requested.
  2953. 0xC : The PTE list is already corrupted at the time of this allocation.
  2954. The corrupt PTE is above the lowest possible PTE address.
  2955. 2 - Corrupt PTE.
  2956. 3 - Number of PTEs the caller is allocating.
  2957. 4 - Type of PTE pool requested.
  2958. 0xD : The caller is trying to free 0 PTEs.
  2959. 2 - Starting PTE.
  2960. 3 - Number of PTEs the caller is freeing.
  2961. 4 - Type of PTE pool.
  2962. 0xE : The caller is trying to free PTEs and the guard PTE has been overwritten.
  2963. 2 - Starting PTE.
  2964. 3 - Number of PTEs the caller is freeing.
  2965. 4 - Type of PTE pool.
  2966. 0xF : The caller is trying to free a bogus PTE.
  2967. The bogus PTE is below the lowest possible PTE address.
  2968. 2 - Bogus PTE.
  2969. 3 - Number of PTEs the caller is trying to free.
  2970. 4 - Type of PTE pool being freed.
  2971. 0x10 : The caller is trying to free a bogus PTE.
  2972. The bogus PTE is above the highest possible PTE address.
  2973. 2 - Bogus PTE.
  2974. 3 - Number of PTEs the caller is trying to free.
  2975. 4 - Type of PTE pool being freed.
  2976. 0x11 : The caller is trying to free a bogus PTE.
  2977. The bogus PTE is at the base of the PTE address space.
  2978. 2 - Bogus PTE.
  2979. 3 - Number of PTEs the caller is trying to free.
  2980. 4 - Type of PTE pool being freed.
  2981. END_VALUES
  2982. DRIVER_CORRUPTED_SYSPTES (0xDB)
  2983. PARAMETERS
  2984. 1 - memory referenced
  2985. 2 - IRQL
  2986. 3 - value 0 = read operation, 1 = write operation
  2987. 4 - address which referenced memory
  2988. DESCRIPTION
  2989. An attempt was made to access a pagable (or completely invalid) address at an
  2990. interrupt request level (IRQL) that is too high. This is
  2991. caused by drivers that have corrupted system PTEs. Set
  2992. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\TrackPtes
  2993. to a DWORD 3 value and reboot. Then the system will save stack traces and
  2994. perform validity checks so the guilty driver can be identified.
  2995. There is no other way to find out which driver did this. When you enable
  2996. this flag, if the driver commits the error again you will see a different
  2997. bugcheck - SYSTEM_PTE_MISUSE - and the stack trace will identify the offending
  2998. driver(s).
  2999. DRIVER_INVALID_STACK_ACCESS (0xDC)
  3000. A driver accessed a stack address that lies below the stack pointer of the
  3001. stack's thread.
  3002. POOL_CORRUPTION_IN_FILE_AREA (0xDE)
  3003. A driver corrupted pool memory used for holding pages destined for disk.
  3004. This was discovered by the memory manager when dereferencing the file.
  3005. IMPERSONATING_WORKER_THREAD (0xDF)
  3006. A workitem forgot to disable impersonation before it completed.
  3007. PARAMETERS
  3008. 1 - Worker Routine that caused this bugcheck.
  3009. 2 - Parameter passed to this worker routine.
  3010. 3 - Pointer to the Workitem.
  3011. ACPI_BIOS_FATAL_ERROR (0xE0)
  3012. Your computer (BIOS) has reported that a component in your system is too faulty
  3013. for Windows to be able to run.
  3014. You can determine which component is faulty by running the diagnostic disk or
  3015. tool that came with your computer.
  3016. If you do not have this tool, you must contact your system vendor and report
  3017. this error message to them. They will be able to assist you in correcting this
  3018. hardware problem, thereby allowing Windows to operate. Microsoft cannot assist
  3019. in the debugging of this problem -- only the hardware vendor can interpret the
  3020. bug check parameters and debug this error.
  3021. WORKER_THREAD_RETURNED_AT_BAD_IRQL (0xE1)
  3022. PARAMETERS
  3023. 1 - address of worker routine (do ln on this to find guilty driver)
  3024. 2 - IRQL returned at (should have been 0, but isn't).
  3025. 3 - workitem parameter
  3026. 4 - workitem address
  3027. MANUALLY_INITIATED_CRASH (0xE2)
  3028. The user manually initiated this crash dump.
  3029. RESOURCE_NOT_OWNED (0xE3)
  3030. A thread tried to release a resource it did not own.
  3031. PARAMETERS
  3032. 1 - Address of resource
  3033. 2 - Address of thread
  3034. 3 - Address of owner table if there is one
  3035. WORKER_INVALID (0xE4)
  3036. A executive worker item was found in memory which must not contain such
  3037. items. Usually this is memory being freed. This is usually caused by
  3038. a device driver that has not cleaned up properly before freeing memory.
  3039. PARAMETERS
  3040. 1 - Code position indicator
  3041. 2 - Address of worker item
  3042. 3 - Start of pool block
  3043. 4 - End of pool block
  3044. DRIVER_VERIFIER_DMA_VIOLATION (0xE6)
  3045. An illegal DMA operation was attempted by a driver being verified.
  3046. PARAMETERS
  3047. 1- Violation code.
  3048. VALUES:
  3049. 0x03 : Double-freed DMA common buffer.
  3050. 0x04 : Double-freed DMA adapter channel.
  3051. 0x05 : Double-freed DMA map register.
  3052. 0x06 : Double-freed DMA scatter-gather list.
  3053. 0x0E : Buffer not locked. DMA transfer has been
  3054. attempted with a PAGED buffer.
  3055. 0x0F : Boundary overrun. Driver or DMA hardware has
  3056. written outside of its allocation.
  3057. 0x18 : Adapter already released. A DMA operation has been
  3058. attempted using an adapter that no longer exists.
  3059. 0x19 : The driver passed a null DMA_ADAPTER value to a
  3060. HAL routine.
  3061. 0x1B : The driver passed an address and an MDL to a HAL
  3062. routine, but this address is not contained in
  3063. this MDL.
  3064. 0x1D : The driver attempted to map an address that was
  3065. already mapped.
  3066. END_VALUES
  3067. INVALID_FLOATING_POINT_STATE (0xE7)
  3068. While restoring the previously saved floating point state for a thread,
  3069. the state was found to be invalid. The first argument indicates which
  3070. validity check failed.
  3071. PARAMETERS
  3072. 1 - indicates which validity check failed.
  3073. VALUES:
  3074. 0 : Saved context flags field is invalid, either FLOAT_SAVE_VALID
  3075. is not set or some of the reserved bits are non-zero. Second
  3076. argument is the flags field.
  3077. 1 : The current processor interrupt priority level (IRQL) is not
  3078. the same as when the floating point context was saved.
  3079. Second argument is saved IRQL, third is current IRQL.
  3080. 2 : The saved context does not belong to the current thread.
  3081. Second argument is the saved address of the thread this
  3082. floating point context belongs to, third argument is the
  3083. current thread.
  3084. END_VALUES
  3085. INVALID_CANCEL_OF_FILE_OPEN (0xE8)
  3086. The fileobject passed to IoCancelFileOpen is invalid. It should have reference
  3087. of 1. The driver that called IoCancelFileOpen is at fault.
  3088. PARAMETERS
  3089. 1 - FileObject passed to IoCancelFileOpen
  3090. 2 - DeviceObject passed to IoCancelFileOpen
  3091. ACTIVE_EX_WORKER_THREAD_TERMINATION (0xE9)
  3092. An executive worker thread is being terminated without having gone through
  3093. the worker thread rundown code. A stack trace should indicate the cause.
  3094. PARAMETERS
  3095. 1 - The exiting ETHREAD.
  3096. THREAD_STUCK_IN_DEVICE_DRIVER (0xEA)
  3097. The device driver is spinning in an infinite loop, most likely waiting for
  3098. hardware to become idle. This usually indicates problem with the hardware
  3099. itself or with the device driver programming the hardware incorrectly.
  3100. PARAMETERS
  3101. 1 - Pointer to a stuck thread object. Do .thread then kb on it to find
  3102. the hung location.
  3103. 2 - Pointer to a DEFERRED_WATCHDOG object.
  3104. 3 - Pointer to offending driver name.
  3105. 4 - Number of times this error occurred. If a debugger is attached,
  3106. this error is not always fatal -- see DESCRIPTION below. On the
  3107. blue screen, this will always equal 1.
  3108. DESCRIPTION
  3109. If the kernel debugger is connected and running when watchdog detects a
  3110. timeout condition then DbgBreakPoint() will be called instead of KeBugCheckEx()
  3111. and detailed message including bugcheck arguments will be printed to the
  3112. debugger. This way we can identify an offending thread, set breakpoints in it,
  3113. and hit go to return to the spinning code to debug it further. Because
  3114. KeBugCheckEx() is not called the .bugcheck directive will not return bugcheck
  3115. information in this case. The arguments are already printed out to the kernel
  3116. debugger. You can also retrieve them from a global variable via
  3117. "dd watchdog!g_WdBugCheckData l5" (use dq on NT64).
  3118. On MP machines it is possible to hit a timeout when the spinning thread is
  3119. interrupted by hardware interrupt and ISR or DPC routine is running at the time
  3120. of the bugcheck (this is because the timeout's work item can be delivered and
  3121. handled on the second CPU and the same time). If this is the case you will have
  3122. to look deeper at the offending thread's stack (e.g. using dds) to determine
  3123. spinning code which caused the timeout to occur.
  3124. THREAD_STUCK_IN_DEVICE_DRIVER_M (0x100000EA)
  3125. The device driver is spinning in an infinite loop, most likely waiting for
  3126. hardware to become idle. This usually indicates problem with the hardware
  3127. itself or with the device driver programming the hardware incorrectly.
  3128. PARAMETERS
  3129. 1 - Pointer to a stuck thread object. Do .thread then kb on it to find
  3130. the hung location.
  3131. 2 - Pointer to a DEFERRED_WATCHDOG object.
  3132. 3 - Pointer to offending driver name.
  3133. 4 - Number of times "intercepted" bugcheck 0xEA was hit (see notes).
  3134. DESCRIPTION
  3135. If the kernel debugger is connected and running when watchdog detects a
  3136. timeout condition then DbgBreakPoint() will be called instead of KeBugCheckEx()
  3137. and detailed message including bugcheck arguments will be printed to the
  3138. debugger. This way we can identify an offending thread, set breakpoints in it,
  3139. and hit go to return to the spinning code to debug it further. Because
  3140. KeBugCheckEx() is not called the .bugcheck directive will not return bugcheck
  3141. information in this case. The arguments are already printed out to the kernel
  3142. debugger. You can also retrieve them from a global variable via
  3143. "dd watchdog!g_WdBugCheckData l5" (use dq on NT64).
  3144. On MP machines it is possible to hit a timeout when the spinning thread is
  3145. interrupted by hardware interrupt and ISR or DPC routine is running at the time
  3146. of the bugcheck (this is because the timeout's work item can be delivered and
  3147. handled on the second CPU and the same time). If this is the case you will have
  3148. to look deeper at the offending thread's stack (e.g. using dds) to determine
  3149. spinning code which caused the timeout to occur.
  3150. DIRTY_MAPPED_PAGES_CONGESTION (0xEB)
  3151. PARAMETERS
  3152. 1 - Total number of dirty pages
  3153. 2 - Number of dirty pages destined for the pagefile(s).
  3154. 3 - Internal flags.
  3155. 4 - Most recent modified write error status.
  3156. DESCRIPTION
  3157. No free pages available to continue operations.
  3158. If kernel debugger available, type "!vm 3".
  3159. This bugcheck usually occurs for the following reasons:
  3160. 1. A driver has blocked, deadlocking the modified or mapped
  3161. page writers. Examples of this include mutex deadlocks or
  3162. accesses to paged out memory in filesystem drivers, filter
  3163. drivers, etc. This indicates a driver bug.
  3164. If parameter 1 or 2 is large, then this is a possibility. Type
  3165. "!vm 3" in the kernel debugger.
  3166. 2. The storage driver(s) are not processing requests. Examples
  3167. of this are stranded queues, non-responding drives, etc. This
  3168. indicates a driver bug.
  3169. If parameter 1 or 2 is large, then this is a possibility. Type
  3170. "!process 0 7" in the kernel debugger.
  3171. 3. Not enough pool is available for the storage stack to write out
  3172. modified pages. This indicates a driver bug.
  3173. If parameter 3 is small, then this is a possibility. Type
  3174. "!vm" and "!poolused 2" in the kernel debugger.
  3175. SESSION_HAS_VALID_SPECIAL_POOL_ON_EXIT (0xEC)
  3176. PARAMETERS
  3177. 1 - session ID
  3178. 2 - number of special pool pages that are leaking
  3179. DESCRIPTION
  3180. Caused by a session driver not freeing its pool allocations prior to a
  3181. session unload. This indicates a bug in win32k.sys, atmfd.dll,
  3182. rdpdd.dll or a video driver.
  3183. UNMOUNTABLE_BOOT_VOLUME (0xED)
  3184. The IO subsystem attempted to mount the boot volume and it failed.
  3185. PARAMETERS
  3186. 1 - Device object of the boot volume
  3187. 2 - Status code from the filesystem on why it failed to mount the volume
  3188. CRITICAL_PROCESS_DIED (0xEF)
  3189. A critical system process died
  3190. PARAMETERS
  3191. 1 - Process object
  3192. SCSI_VERIFIER_DETECTED_VIOLATION (0xF1)
  3193. PARAMETERS
  3194. 1 - Error code:
  3195. VALUES
  3196. 1000 : Miniport passed bad params to ScsiPortInitialize
  3197. 2 - First argument to ScsiPortInitialize
  3198. 3 - Second argument to ScsiPortInitialize
  3199. 1001 : Miniport stalled processor too long
  3200. 2 - Delay in microseconds supplied by miniport
  3201. 1002 : Miniport routine executed too long
  3202. 2 - Address of routine that ran too long
  3203. 3 - Address of miniport's HwDeviceExtension
  3204. 4 - Duration of the routine in microseconds
  3205. 1003 : Miniport completed a request multiple times
  3206. 2 - Address of miniport's HwDeviceExtension
  3207. 3 - Address of SRB of multiply completed request
  3208. 1004 : Miniport has completed request with bad status
  3209. 2 - Address of SRB
  3210. 3 - Address of miniport's HwDeviceExtension
  3211. 1005 : Miniport has asked for the next LU request while
  3212. an untagged request is active
  3213. 2 - Address of miniport's HwDeviceExtension
  3214. 3 - Address of logical unit extension
  3215. 1006 : Miniport called ScsiportGetPhysicalAddress with a bad VA
  3216. 2 - Address of miniport's HwDeviceExtension
  3217. 3 - VA supplied by the miniport
  3218. 1007 : Miniport had outstanding requests at the end of a bus reset period
  3219. 2 - Address of adapter extension
  3220. 3 - Address of miniport's HwDeviceExtension
  3221. END_VALUES
  3222. DESCRIPTION
  3223. The SCSI verifier has detected an error in a SCSI miniport driver being verified.
  3224. HARDWARE_INTERRUPT_STORM (0xF2)
  3225. Note: This bug check no longer exists in any version of Windows.
  3226. % JVert wants this kept in bugcodes.w in case it is reinstated at some
  3227. % point in the future.
  3228. PARAMETERS
  3229. 1 - address of the ISR (or first ISR in the chain) connected to the storming interrupt vector
  3230. 2 - ISR context value
  3231. 3 - address of the interrupt object for the storming interrupt vector
  3232. 4 - 0x1 if the ISR is not chained, 0x2 if the ISR is chained
  3233. DESCRIPTION
  3234. This bugcheck will show up on the screen when the kernel
  3235. detects an interrupt "storm". An interrupt storm is defined as a level
  3236. triggered interrupt signal staying in the asserted state. This is fatal
  3237. to the system in the manner that the system will hard hang, or "bus lock".
  3238. This can happen because of the following:
  3239. - A piece of hardware does not release its interrupt signal after being told
  3240. to do so by the device driver
  3241. - A device driver does not instruct its hardware to release the interrupt
  3242. signal because it does not believe the interrupt was initiated from its
  3243. hardware
  3244. - A device driver claims the interrupt even though the interrupt was not
  3245. initiated from its hardware. Note that this can only occur when multiple
  3246. devices are sharing the same IRQ.
  3247. - The ELCR (edge level control register) is set incorrectly.
  3248. - Edge and Level interrupt triggered devices share an IRQ (e.g. COM port and
  3249. PCI SCSI controller).
  3250. All of these cases will instantly hard hang your system. Instead of hard
  3251. hanging the system, this bugcheck is initiated since in many cases it can
  3252. identify the culprit.
  3253. When the bugcheck occurs, the module containing the ISR (interrupt service
  3254. routine) of the storming IRQ is displayed on the screen. This is an
  3255. example of what you would see:
  3256. *** STOP: 0x000000F2 (0xFCA7C55C, 0x817B9B28, 0x817D2AA0, 0x00000002)
  3257. An interrupt storm has caused the system to hang.
  3258. *** Address FCA7C55C base at FCA72000, Datestamp 3A72BDEF - ACPI.sys
  3259. In the event the fourth parameter is a 0x00000001, the module pointed to
  3260. is very likely the culprit. Either the driver is broken, or the hardware
  3261. is malfunctioning.
  3262. In the event the fourth parameter is a 0x00000002, the module pointed to
  3263. is the first ISR in the chain, and is never guaranteed to be the culprit.
  3264. A user experiencing this bugcheck repeatedly should try to isolate the
  3265. problem by looking for devices that are on the same IRQ as the one for
  3266. which the module is a driver for (in this case, the same IRQ that ACPI
  3267. is using). In the future, we may be able to list all devices on a
  3268. chained ISR.
  3269. % If you see a bugcheck like this, you should send mail to WINIRQTR to
  3270. % have the system debugged. People on this alias are well trained to debug
  3271. % this type of failure and can typically isolate the faulty hardware or
  3272. % device driver quickly.
  3273. DISORDERLY_SHUTDOWN (0xF3)
  3274. No free pages available to continue operations.
  3275. Because applications are not terminated and drivers are
  3276. not unloaded, they can continue to access pages even after
  3277. the modified writer has terminated. This can cause the
  3278. system to run out of pages since the pagefile(s) cannot be used.
  3279. PARAMETERS
  3280. 1 - Total number of dirty pages
  3281. 2 - Number of dirty pages destined for the pagefile(s).
  3282. 3 - Internal flags.
  3283. 4 - Most recent modified write error status.
  3284. CRITICAL_OBJECT_TERMINATION (0xF4)
  3285. A process or thread crucial to system operation has unexpectedly exited or been
  3286. terminated.
  3287. Several processes and threads are necessary for the operation of the
  3288. system; when they are terminated (for any reason), the system can no
  3289. longer function.
  3290. PARAMETERS
  3291. 1 - Terminating object type
  3292. VALUES:
  3293. 3 : Process
  3294. 6 : Thread
  3295. END_VALUES
  3296. 2 - Terminating object
  3297. 3 - Process image file name
  3298. 4 - Explanatory message (ascii)
  3299. PCI_VERIFIER_DETECTED_VIOLATION (0xF6)
  3300. The PCI driver detected an error in a device or BIOS being verified.
  3301. PARAMETERS
  3302. 1 - Failure detected
  3303. VALUES:
  3304. 1 : An active bridge was reprogrammed by the BIOS during a docking event
  3305. 2 : The PMCSR register was not updated within the spec mandated time
  3306. 3 : A driver has written to OS controlled portions of a PCI device's config space
  3307. END_VALUES
  3308. DRIVER_OVERRAN_STACK_BUFFER (0xF7)
  3309. A driver has overrun a stack-based buffer. This overrun could potentially
  3310. allow a malicious user to gain control of this machine.
  3311. DESCRIPTION
  3312. A driver overran a stack-based buffer (or local variable) in a way that would
  3313. have overwritten the function's return address and jumped back to an arbitrary
  3314. address when the function returned. This is the classic "buffer overrun"
  3315. hacking attack and the system has been brought down to prevent a malicious user
  3316. from gaining complete control of it.
  3317. Do a kb to get a stack backtrace -- the last routine on the stack before the
  3318. buffer overrun handlers and bugcheck call is the one that overran its local
  3319. variable(s).
  3320. RAMDISK_BOOT_INITIALIZATION_FAILED (0xF8)
  3321. An initialization failure occurred while attempting to boot from the RAM disk.
  3322. PARAMETERS
  3323. 1 - Action that failed
  3324. VALUES:
  3325. 1 : No LoaderXIPRom descriptor was found in the loader memory list
  3326. 2 : Unable to open the RAM disk driver (ramdisk.sys, \Device\Ramdisk)
  3327. 3 : FSCTL_CREATE_RAM_DISK failed
  3328. 4 : Unable to create GUID string from binary GUID
  3329. 5 : Unable to create symbolic link pointing to RAM disk device
  3330. END_VALUES
  3331. 2 - NT status code
  3332. DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN (0xF9)
  3333. A driver returned STATUS_REPARSE to a Create request with no trailing names.
  3334. STATUS_REPARSE should be returned only for Create requests with trailing names
  3335. as that indicates the driver is supporting name spaces.
  3336. PARAMETERS
  3337. 1 - Device object that was opened.
  3338. 2 - Device object to which the Create IRP was issued.
  3339. 3 - New name of the file (to be reparsed) (UNICODE string)
  3340. 4 - Information returned by the driver for the Create IRP
  3341. HTTP_DRIVER_CORRUPTED (0xFA)
  3342. The HTTP kernel driver (http.sys) reached a corrupted state and can not
  3343. recover.
  3344. PARAMETERS
  3345. 1 - State identifier
  3346. VALUES:
  3347. 1 : A work item is invalid. This will eventually result in
  3348. corruption of the thread pool and an access violation.
  3349. 2 - Address of work item
  3350. 3 - Name of file containing work item check, __FILE__
  3351. 4 - Line number in file, __LINE__
  3352. END_VALUES
  3353. BUGCODE_PSS_MESSAGE (0x4000007C)
  3354. Generic bugcode message.
  3355. ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY (0xFC)
  3356. An attempt was made to execute to non-executable memory. The guilty driver
  3357. is on the stack trace (and is typically the current instruction pointer).
  3358. PARAMETERS
  3359. 1 - Virtual address for the attempted execute.
  3360. 2 - PTE contents.
  3361. 3 - (reserved)
  3362. % 3 - Unique internal Mm information.
  3363. 4 - (reserved)
  3364. % 4 - Unique internal Mm code.
  3365. DESCRIPTION
  3366. When possible, the guilty driver's name (Unicode string) is printed on
  3367. the bugcheck screen and saved in KiBugCheckDriver.
  3368. DIRTY_NOWRITE_PAGES_CONGESTION (0xFD)
  3369. PARAMETERS
  3370. 1 - Total number of dirty pages
  3371. 2 - Number of nowrite dirty pages.
  3372. 3 - Internal flags.
  3373. 4 - Most recent modified write error status.
  3374. DESCRIPTION
  3375. No free pages available to continue operations.
  3376. If kernel debugger available, type "!vm 3 and !memusage 1".
  3377. This bugcheck usually occurs because the component owning the
  3378. modified nowrite pages failed to write out these pages after
  3379. marking the relevant files as dont-write to memory management.
  3380. This indicates a driver bug.
  3381. BUGCODE_USB_DRIVER (0xFE)
  3382. PARAMETERS
  3383. 1 - USB Bugcheck Code:
  3384. VALUES
  3385. 1 : INTERNAL_ERROR An internal error has occured in the USB stack
  3386. 2 : BAD_URB The USB client driver has submitted a URB that is
  3387. still attached to another IRP still pending in the bus
  3388. driver.
  3389. 2 - Address of pending IRP.
  3390. 3 - Address of IRP passed in.
  3391. 4 - Address URB that caused the error.
  3392. 3 : MINIPORT_ERROR The USB miniport driver has generated a
  3393. bugcheck. This is usually in response to catastrophic
  3394. hardware failure.
  3395. 4 : IRP_URB_DOUBLE_SUBMIT The caller has submitted an irp
  3396. that is already pending in the USB bus driver.
  3397. 2 - Address of IRP
  3398. 3 - Address of URB
  3399. DESCRIPTION
  3400. USB Driver bugcheck, first parameter is USB bugcheck code.
  3401. WINLOGON_FATAL_ERROR (0xC000021A)
  3402. The Winlogon process terminated unexpectedly.
  3403. MANUALLY_INITIATED_CRASH1 (0xDEADDEAD)
  3404. The user manually initiated this crash dump.
  3405. % NOTE: See the beginning of this file for formatting instructions.
  3406. % If you are adding new bugcodes to this file, make sure you place
  3407. % them in the proper numerical order!