The KERNEL_DATA_INPAGE_ERROR bug check has a value of 0x0000007A. This bug check indicates that the requested page of kernel data from the paging file could not be read into memory. Usually, this is the HDD or HDD interface problem. Then we can check parameter 2 for more information.
Cause
Frequently, you can determine the cause of the KERNEL_DATA_INPAGE_ERROR bug check from the error status (Parameter 2). Some common status codes include the following:
- 0xC000009A, or STATUS_INSUFFICIENT_RESOURCES, indicates a lack of nonpaged pool resources.
- 0xC000009C, or STATUS_DEVICE_DATA_ERROR, typically indicates bad blocks (sectors) on the hard disk.
- 0xC000009D, or STATUS_DEVICE_NOT_CONNECTED, indicates defective or loose cabling, termination, or that the controller does not see the hard disk.
- 0xC000016A, or STATUS_DISK_OPERATION_FAILED, indicates bad blocks (sectors) on the hard disk.
- 0xC0000185, or STATUS_IO_DEVICE_ERROR, indicates improper termination or defective cabling on SCSI devices or that two devices are trying to use the same IRQ.
These status codes are the most common ones that have specific causes. For more information about other possible status codes that can be returned, see the Ntstatus.h file in the Microsoft Windows Driver Kit (WDK). Sometimes, these status code will be also shown in the other kind dump files. This status code will be useful for us to check the dump file. Another common cause of this error message is defective hardware or failing RAM. Or a virus infection can also cause this bug check.
Here also show you the detail about "Resolving the Problem" from windbg help.
Resolving a bad block problem: An I/O status code of 0xC000009C or 0xC000016A typically indicates that the data could not be read from the disk because of a bad block (sector). If you can restart the computer after the error, Autochk runs automatically and attempts to map the bad sector to prevent it from being used anymore.
If Autochk does not scan the hard disk for errors, you can manually start the disk scanner. Run Chkdsk /f /r on the system partition. You must restart the computer before the disk scan begins. If you cannot start the computer because of the error, use the Recovery Console and runChkdsk /r.
Resolving a defective hardware problem: If the I/O status is C0000185 and the paging file is on an SCSI disk, check the disk cabling and SCSI termination for problems.
Resolving a failing RAM problem: Run the hardware diagnostics that the system manufacturer supplies, especially the memory scanner. For more information about these procedures, see the owner's manual for your computer.
Check that all the adapter cards in the computer are properly seated. Use an ink eraser or an electrical contact treatment, available at electronics supply stores, to ensure adapter card contacts are clean.
Check the System Log in Event Viewer for additional error messages that might help identify the device that is causing the error. You can also disable memory caching of the BIOS to try to resolve this error.
Make sure that the latest Windows Service Pack is installed.
If the preceding steps do not resolve the error, take the system motherboard to a repair facility for diagnostic testing. A crack, a scratched trace, or a defective component on the motherboard can cause this error.
Resolving a virus infection: Check your computer for viruses by using any up-to-date, commercial virus scanning software that examines the Master Boot Record of the hard disk. All Windows file systems can be infected by viruses.
There is one real case here
Here is some of the "!analyze -v" result.
KERNEL_DATA_INPAGE_ERROR (7a)
The requested page of kernel data could not be read in. Typically caused by
a bad block in the paging file or disk controller error. Also see
KERNEL_STACK_INPAGE_ERROR.
If the error status is 0xC000000E, 0xC000009C, 0xC000009D or 0xC0000185,
it means the disk subsystem has experienced a failure.
If the error status is 0xC000009A, then it means the request failed because
a filesystem failed to make forward progress.
Arguments:
Arg1: c040f570, lock type that was held (value 1,2,3, or PTE address)
Arg2: c000009d, error status (normally i/o status code)
Arg3: 2c36a860, current process (virtual address for lock type 3, or PTE)
Arg4: 81eae500, virtual address that could not be in-paged (or PTE contents if arg1 is a PTE address)
Debugging Details:
------------------
ERROR_CODE: (NTSTATUS) 0xc000009d - STATUS_DEVICE_NOT_CONNECTED
DISK_HARDWARE_ERROR: There was error with disk hardware
BUGCHECK_STR: 0x7a_c000009d
DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
SCSI Miniport Extensions (Scsikd.dll and Minipkd.dll)
Extension commands that are useful for debugging SCSI miniport drivers can be found in Scsikd.dll and Minipkd.dll.
You can use the Scsikd.dll extension commands with any version of Windows. However, you can only use the Minipkd.dll extension commands with Windows XP and later versions of Windows. Commands in Minipkd.dll are only applicable to SCSIport-based miniports.
For more information, see SCSI Miniport Debugging.
Actually, "!classext" is the often used command for me to check SATA related problem.
kd> .load scsikd
kd> !classext
Storage class devices:
* !classext 8658d310 [1,2] ST332081 3AS Paging Disk
!classext 89b67a28 [1,2] Optiarc CDRWDVD CRX890S Removable Cdrom
Usage: !classext <class device> <level [0-2]>
kd> !scsikd.classext 8658d310 2
Storage class device 8658d310 with extension at 8658d3c8
Classpnp Internal Information at 86690310
Transfer Packet Engine:
Packet Status DL Irp Opcode Sector UL Irp
-------- ------ -------- ------ -------- --------
8a0b59f8 Free 84f8b488
85f99128 Free 8a15b310
84f9ff08 Free a32dd860
8a0977c8 Free a484e2d0
84f9abe0 Free 8cb6e008
8cc3af08 Free 9d790008
8ccb04d8 Free 8caf8678
852e7810 Free 8a039920
Pending Idle Requests: 0x0
Failed Requests:
Srb Scsi
Opcode Status Status Sense Code Sector Time Stamp
------ ------ ------ ---------- -------- ------------
2a 0a 00 00 00 00 00521510 03:40:58.212
2a 0a 00 00 00 00 00549f98 03:40:58.212
2a 0a 00 00 00 00 0054a058 03:40:58.212
2a 0a 00 00 00 00 0054a118 03:40:58.212
2a 0a 00 00 00 00 0054a1d8 03:40:58.212
2a 0a 00 00 00 00 0054a298 03:40:58.212
2a 0a 00 00 00 00 005e0808 03:40:58.212
2a 0a 00 00 00 00 00288558 03:40:58.212
2a 0a 00 00 00 00 0029e230 03:40:58.212
2a 0a 00 00 00 00 005e1748 03:40:58.212
2a 0a 00 00 00 00 005e1748 03:40:58.212
2a 0a 00 00 00 00 005e0800 03:40:58.212
2a 0a 00 00 00 00 00d17650 03:40:58.212
2a 0a 00 00 00 00 00275858 03:40:58.212
2a 0a 00 00 00 00 005e0808 03:40:58.212
2a 0a 00 00 00 00 003b1038 03:40:58.212
Opcode : It mean SCSI CDB operation codes and it can find the detail information in the storport.h of Windows WDK. Below show some definitions.
// 10-byte commands
#define SCSIOP_READ_FORMATTED_CAPACITY 0x23
#define SCSIOP_READ_CAPACITY 0x25
#define SCSIOP_READ 0x28
#define SCSIOP_WRITE 0x2A
Srb status : It also can be checked in the WDK storport.h
#define SRB_STATUS_PENDING 0x00
#define SRB_STATUS_SUCCESS 0x01
#define SRB_STATUS_ABORTED 0x02
#define SRB_STATUS_ABORT_FAILED 0x03
#define SRB_STATUS_ERROR 0x04
#define SRB_STATUS_BUSY 0x05
#define SRB_STATUS_INVALID_REQUEST 0x06
#define SRB_STATUS_INVALID_PATH_ID 0x07
#define SRB_STATUS_NO_DEVICE 0x08
#define SRB_STATUS_TIMEOUT 0x09
#define SRB_STATUS_SELECTION_TIMEOUT 0x0A
#define SRB_STATUS_COMMAND_TIMEOUT 0x0B
Scsi status : A SCSI Status Code is used to determine the success or failure of a SCSI command. At the end of any command, the target returns a Status Code byte which should be one of the following: (http://en.wikipedia.org/wiki/SCSI_Status_Code)
CodeName
00hGOOD
02hCHECK CONDITION
04hCONDITION MET
08hBUSY
18hRESERVATION CONFLICT
28hTASK SET FULL
30hACA ACTIVE
40hTASK ABORTED
Sense code : It can check http://en.wikipedia.org/wiki/Key_Code_Qualifier for more detail.
Key Code Qualifier is a computer term used to describe an error-code returned by a SCSI device.
When a SCSI target device returns a check condition in response to a command, the initiator usually then issues a SCSI Request Sense command. This process is part of a SCSI protocol calledContingent Allegiance Condition. The target will respond to the Request Sense command with a set of SCSI sense data which includes three fields giving increasing levels of detail about the error:
- K - sense key - 4 bits, (byte 2 of Fixed sense data format)
- C - additional sense code (ASC) - 8 bits, (byte 12 of Fixed sense data format)
- Q - additional sense code qualifier (ASCQ) - 8 bits, (byte 13 of Fixed sense data format)
The initiator can take action based on just the K field which indicates if the error is minor or major. However all three fields are usually logically combined into a 20 bit field called Key Code Qualifier or KCQ. The specification for the target device will define the list of possible KCQ values. In practice there are many KCQ values which are common between different SCSI device types and different SCSI device vendors.
沒有留言:
張貼留言