Microsoft KB Archive/325606

= Description of Event ID 51 in the System Event Log =

PSS ID Number: 325606

Article Last Modified on 7/26/2002

-

The information in this article applies to:


 * Microsoft Windows XP Professional
 * Microsoft Windows XP Home Edition

-



This article was previously published under Q325606



For a Microsoft Windows 2000 version of this article, see 244780.



SUMMARY
This article describes event ID 51 entries that may be recorded in the System event log. This is an example of an event ID 51 entry that is logged in the System event log when the system is writing information to the physical disk:

Event ID: 51

Event Type: Warning

Event Source: Disk

Description: An error was detected on device \Device\Harddisk3\DR3 during a paging operation.

Data:

0000: 04 00 22 00 01 00 72 00

0008: 00 00 00 00 33 00 04 80

0010: 2d 01 00 00 00 00 00 00

0018: 00 00 00 00 00 00 00 00

0020: 00 52 ea 04 15 00 00 00

0028: 01 00 00 00 04 00 00 00

0030: 03 00 00 00 2a 00 00 00

0038: 02 84 00 00 00 29 06 00

0040: 2a 60 0a 82 75 29 00 00

0048: 80 00

Note that the device in the description and the specific hexadecimal data may vary.



MORE INFORMATION
An event ID 51 entry is a generic error entry for any type of error that occurs when Windows is paging information to input/output (I/O). A paging operation occurs when Windows either swaps a page of memory from memory to disk, or when Windows retrieves a page of memory from disk to memory. This is part of the memory management features of Windows XP.

Not every disk access is paging I/O. Programs can perform non-buffered I/O to access disk data. Also, Windows is not necessarily writing to the paging file (Pagefile.sys), which the name implies. This may be any type of data access. Event ID 51 is similar to event ID 9 or 11, but it is not as serious an error. Event ID 51 occurs only during a paging I/O operation. If this error occurs when no paging operation is occurring, an event is not logged, which is unlike event ID 9 or 11.

You can troubleshoot event ID 51 in the same manner as event ID 9 or 11. For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

314093 How to Troubleshoot Error Messages About Event ID 9 and Event ID 11

You can use the binary data that is associated with any &quot;Disk&quot; error (event IDs 9, 11, 51, and others) to help you identify the problem. You do this by decoding the data section of the error. For additional information about how to decode the data section, click the article number below to view the article in the Microsoft Knowledge Base:

182335 INFO: Format of Event Log Data Created by ScsiPortLogError

Entries in the Data Section
Because event ID 51 has an additional Cdb field, you must consider the following information when you are reviewing the data section of an event ID 51 entry.

The Error Code
In the sample entry in the &quot;Summary&quot; section of this article, the error code is listed in the second line, which starts with &quot;0008:&quot; and includes the last four octets in the line.

ErrorCode = 0x80040033.

This is the code for error 51, which is the same for all event ID 51 errors:

IO_WARNING_PAGING_FAILURE

When you are interpreting the status code from the hexadecimal data in the event ID entry, remember that the values are represented in the little Endian format.

The Final Status Code
In the example in the &quot;Summary&quot; section of this article, the final status code is listed in the third line, which starts with &quot;0010:&quot; and includes the last four octets in the line.

FinalStatus = 0x00000000.

This event ID data indicates &quot;success,&quot; so it is probable that no loss of data occurred.

The SCSI Request Block (SRB) Parameters
You can use this data to you help determine where the problem occurred. The Data section is represented in the following format:

DumpData[0] = PathId

DumpData[1] = TargetId

DumpData[2] = LUN

DumpData[3] = Cdb

DumpData[4] = ErrorEncountered 8 | ScsiStatus

In the example in the &quot;Summary&quot; section of this article, the ScsiStatus value is 0x02 (the first octet in the &quot;0038&quot; line), and the SrbStatus value is 0x84 (the second octet in the &quot;0038&quot; line). This provides the following information:

SrbStatus of 0x84: SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_ERROR

ScsiStatus of 0x02: SP_UNEXPECTED_DISCONNECT

Ten SCSI errors are currently defined in the Microsoft Windows NT Device Driver Kit (DDK) documentation, and in the Srb.h file. The SCSI miniport calls ScsiPortLogError and supplies a SCSI error value (SP_ ) as the ErrorCode parameter. By using the information from the following table, the ScsiPort driver translates the SCSI error to a Windows NT error code (IO_ERR_ ).

SRB status codes (from the Srb.h file):

0x00 = SRB_STATUS_PENDING

0x01 = SRB_STATUS_SUCCESS

0x02 = SRB_STATUS_ABORTED

0x03 = SRB_STATUS_ABORT_FAILED

0x04 = SRB_STATUS_ERROR

0x05 = SRB_STATUS_BUSY

0x06 = SRB_STATUS_INVALID_REQUEST

0x07 = SRB_STATUS_INVALID_PATH_ID

0x08 = SRB_STATUS_NO_DEVICE

0x09 = SRB_STATUS_TIMEOUT

0x0A = SRB_STATUS_SELECTION_TIMEOUT

0x0B = SRB_STATUS_COMMAND_TIMEOUT

0x0D = SRB_STATUS_MESSAGE_REJECTED

0x0E = SRB_STATUS_BUS_RESET

0x0F = SRB_STATUS_PARITY_ERROR

0x10 = SRB_STATUS_REQUEST_SENSE_FAILED

0x11 = SRB_STATUS_NO_HBA

0x12 = SRB_STATUS_DATA_OVERRUN

0x13 = SRB_STATUS_UNEXPECTED_BUS_FREE

0x14 = SRB_STATUS_PHASE_SEQUENCE_FAILURE

0x15 = SRB_STATUS_BAD_SRB_BLOCK_LENGTH

0x16 = SRB_STATUS_REQUEST_FLUSHED

0x20 = SRB_STATUS_INVALID_LUN

0x21 = SRB_STATUS_INVALID_TARGET_ID

0x22 = SRB_STATUS_BAD_FUNCTION

0x23 = SRB_STATUS_ERROR_RECOVERY

0x24 = SRB_STATUS_NOT_POWERED

This value is used by the port driver to indicate that a non-SCSI-related error occurred. Miniports must never return this status:

0x30 = SRB_STATUS_INTERNAL_ERROR

SRB status values 0x38 through 0x3f are reserved for internal port driver use.

SRB status masks must be broken down; they are a sub-status. They are combined with the error that is listed earlier in this article:

0x40 = SRB_STATUS_QUEUE_FROZEN

0x80 = SRB_STATUS_AUTOSENSE_VALID

For example, 0x84 is 0x80, which equals SRB_STATUS_AUTOSENSE_VALID and 0x04 SRB_STATUS_ERROR.

SCSI status codes (from the Scsi.h file):

0x00 = SCSISTAT_GOOD

0x02 = SCSISTAT_CHECK_CONDITION

0x04 = SCSISTAT_CONDITION_MET

0x08 = SCSISTAT_BUSY

0x10 = SCSISTAT_INTERMEDIATE

0x14 = SCSISTAT_INTERMEDIATE_COND_MET

0x18 = SCSISTAT_RESERVATION_CONFLICT

0x22 = SCSISTAT_COMMAND_TERMINATED

0x28 = SCSISTAT_QUEUE_FULL

Keywords: kberrmsg kbinfo KB325606

Technology: kbWinXPHome kbWinXPHomeSearch kbWinXPPro kbWinXPProSearch kbWinXPSearch

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© 2003 Microsoft Corporation. All rights reserved.