PFN_LIST_CORRUPT BSOD parameters

I am occasionally getting a PFN_LIST_CORRUPT BSOD on a W2K PC. According to
!analyze -v the parameters have the following meanings:

PFN_LIST_CORRUPT (4e)
Typically caused by drivers passing bad memory descriptor lists (ie:
calling
MmUnlockPages twice with the same list, etc). If a kernel debugger
is
available get the stack trace.
Arguments:
Arg1: 00000002, A list entry was corrupt
Arg2: 0008b3cc, entry in list being removed
Arg3: 0001ff76, highest physical page number
Arg4: 00000008, reference count of entry being removed

I’m pretty sure that I’m not calling MmUnlockPages twice and I suspect that
my hardware may have stepped on the PFN List.

Does anyone know what Arg2 is. Is this a physical address or a virtual
address? Is it a pointer to a structure of some type? Also, am I correct
that Arg3 is the highest physical page number for the PC which would means
this PC has 512K of memory?

I was hoping to determine why W2K thinks the entry is bad and it seems like
knowing what Arg2 is would be a first step.

  • Steve -

I suggest checking the latest windbg docs from
http://www.microsoft.com/ddk/debugging to learn about the different bug
check code & their parameters.

-----Original Message-----
From: Whitman, Steve [mailto:xxxxx@cognex.com]
Sent: Wednesday, January 08, 2003 2:49 PM
To: Kernel Debugging Interest List
Subject: [windbg] PFN_LIST_CORRUPT BSOD parameters

I am occasionally getting a PFN_LIST_CORRUPT BSOD on a W2K PC.
According to !analyze -v the parameters have the following meanings:

PFN_LIST_CORRUPT (4e)
Typically caused by drivers passing bad memory descriptor lists
(ie: calling
MmUnlockPages twice with the same list, etc). If a kernel
debugger is
available get the stack trace.
Arguments:
Arg1: 00000002, A list entry was corrupt
Arg2: 0008b3cc, entry in list being removed
Arg3: 0001ff76, highest physical page number
Arg4: 00000008, reference count of entry being removed

I’m pretty sure that I’m not calling MmUnlockPages twice and I suspect
that my hardware may have stepped on the PFN List.

Does anyone know what Arg2 is. Is this a physical address or a virtual
address? Is it a pointer to a structure of some type? Also, am I
correct that Arg3 is the highest physical page number for the PC which
would means this PC has 512K of memory?

I was hoping to determine why W2K thinks the entry is bad and it seems
like knowing what Arg2 is would be a first step.

  • Steve -

You are currently subscribed to windbg as: xxxxx@microsoft.com To
unsubscribe send a blank email to xxxxx@lists.osr.com

The windbg help file isn’t very helpful - it just says the same thing, that
Arg2 is “the entry in the list being removed”.

Looks to me like Arg2 is the physical page number of the corrupted entry -
you can do “!pfn 8b3cc” to dump the entry which will at least show you which
list the page is on; e.g.:

3: kd> !pfn 8b3cc
PFN 0008B3CC at address 86B4BB20
flink 00000000 blink / share count 00000020 pteaddress 00000000
reference count 0000 color 0
restore pte 00000001 containing page 00000B Zeroed R X
ReadInProgress ParityError

I don’t know what all these things mean, but, in this case, the page is on
the zeroed list - obviously your case would be different; might help you
work out what you are doing wrong…

/simgr

-----Original Message-----
From: Whitman, Steve [mailto:xxxxx@cognex.com]
Sent: Wednesday, January 08, 2003 5:49 PM
To: Kernel Debugging Interest List
Subject: [windbg] PFN_LIST_CORRUPT BSOD parameters

I am occasionally getting a PFN_LIST_CORRUPT BSOD on a W2K PC. According to
!analyze -v the parameters have the following meanings:

PFN_LIST_CORRUPT (4e)
Typically caused by drivers passing bad memory descriptor lists (ie:
calling
MmUnlockPages twice with the same list, etc). If a kernel debugger
is
available get the stack trace.
Arguments:
Arg1: 00000002, A list entry was corrupt
Arg2: 0008b3cc, entry in list being removed
Arg3: 0001ff76, highest physical page number
Arg4: 00000008, reference count of entry being removed

I’m pretty sure that I’m not calling MmUnlockPages twice and I suspect that
my hardware may have stepped on the PFN List.

Does anyone know what Arg2 is. Is this a physical address or a virtual
address? Is it a pointer to a structure of some type? Also, am I correct
that Arg3 is the highest physical page number for the PC which would means
this PC has 512K of memory?

I was hoping to determine why W2K thinks the entry is bad and it seems like
knowing what Arg2 is would be a first step.

  • Steve -

You are currently subscribed to windbg as: xxxxx@stratus.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

I checked the latest docs and they don’t contain any additional information
about what the entry list being removed is. It just lists what !analyze
states.

In general I have found that much of the documentation has been lacking on
explaining what the output from some of the various commands means and how
that output might be used to diagnose a problem. I am glad to see that the
documentation has been getting much better with each release.

  • Steve -

-----Original Message-----
From: Nathan Nesbit [mailto:xxxxx@windows.microsoft.com]
Sent: Wednesday, January 08, 2003 6:01 PM
To: Kernel Debugging Interest List
Subject: [windbg] RE: PFN_LIST_CORRUPT BSOD parameters

I suggest checking the latest windbg docs from
http://www.microsoft.com/ddk/debugging to learn about the
different bug
check code & their parameters.

-----Original Message-----
From: Whitman, Steve [mailto:xxxxx@cognex.com]
Sent: Wednesday, January 08, 2003 2:49 PM
To: Kernel Debugging Interest List
Subject: [windbg] PFN_LIST_CORRUPT BSOD parameters

I am occasionally getting a PFN_LIST_CORRUPT BSOD on a W2K PC.
According to !analyze -v the parameters have the following meanings:

PFN_LIST_CORRUPT (4e)
Typically caused by drivers passing bad memory descriptor lists
(ie: calling
MmUnlockPages twice with the same list, etc). If a kernel
debugger is
available get the stack trace.
Arguments:
Arg1: 00000002, A list entry was corrupt
Arg2: 0008b3cc, entry in list being removed
Arg3: 0001ff76, highest physical page number
Arg4: 00000008, reference count of entry being removed

I’m pretty sure that I’m not calling MmUnlockPages twice and I suspect
that my hardware may have stepped on the PFN List.

Does anyone know what Arg2 is. Is this a physical address or
a virtual
address? Is it a pointer to a structure of some type? Also, am I
correct that Arg3 is the highest physical page number for the PC which
would means this PC has 512K of memory?

I was hoping to determine why W2K thinks the entry is bad and it seems
like knowing what Arg2 is would be a first step.

  • Steve -

You are currently subscribed to windbg as: xxxxx@microsoft.com To
unsubscribe send a blank email to xxxxx@lists.osr.com


You are currently subscribed to windbg as: xxxxx@cognex.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

I thought that Arg2 might be the physical page number as well and used the
!pfn command. However, some of the other PFN_LIST_CORRUPT (4e) bug check
descriptions state explicitly that Arg2 is the PFN so I’m doubtful that Arg2
in this case is the same thing.

BTW, my output indicated that the page has a parity error so if Arg2 really
is the PFN then perhaps I have bad memory in the system.

  • Steve -

-----Original Message-----
From: Graham, Simon [mailto:xxxxx@stratus.com]
Sent: Wednesday, January 08, 2003 10:21 PM
To: Kernel Debugging Interest List
Subject: [windbg] RE: PFN_LIST_CORRUPT BSOD parameters

The windbg help file isn’t very helpful - it just says the
same thing, that
Arg2 is “the entry in the list being removed”.

Looks to me like Arg2 is the physical page number of the
corrupted entry -
you can do “!pfn 8b3cc” to dump the entry which will at least
show you which
list the page is on; e.g.:

3: kd> !pfn 8b3cc
PFN 0008B3CC at address 86B4BB20
flink 00000000 blink / share count 00000020
pteaddress 00000000
reference count 0000 color 0
restore pte 00000001 containing page 00000B
Zeroed R X
ReadInProgress ParityError

I don’t know what all these things mean, but, in this case,
the page is on
the zeroed list - obviously your case would be different;
might help you
work out what you are doing wrong…

/simgr

-----Original Message-----
From: Whitman, Steve [mailto:xxxxx@cognex.com]
Sent: Wednesday, January 08, 2003 5:49 PM
To: Kernel Debugging Interest List
Subject: [windbg] PFN_LIST_CORRUPT BSOD parameters

I am occasionally getting a PFN_LIST_CORRUPT BSOD on a W2K
PC. According to
!analyze -v the parameters have the following meanings:

PFN_LIST_CORRUPT (4e)
Typically caused by drivers passing bad memory
descriptor lists (ie:
calling
MmUnlockPages twice with the same list, etc). If a
kernel debugger
is
available get the stack trace.
Arguments:
Arg1: 00000002, A list entry was corrupt
Arg2: 0008b3cc, entry in list being removed
Arg3: 0001ff76, highest physical page number
Arg4: 00000008, reference count of entry being removed

I’m pretty sure that I’m not calling MmUnlockPages twice and
I suspect that
my hardware may have stepped on the PFN List.

Does anyone know what Arg2 is. Is this a physical address or
a virtual
address? Is it a pointer to a structure of some type? Also,
am I correct
that Arg3 is the highest physical page number for the PC
which would means
this PC has 512K of memory?

I was hoping to determine why W2K thinks the entry is bad and
it seems like
knowing what Arg2 is would be a first step.

  • Steve -

You are currently subscribed to windbg as: xxxxx@stratus.com
To unsubscribe send a blank email to xxxxx@lists.osr.com


You are currently subscribed to windbg as: xxxxx@cognex.com
To unsubscribe send a blank email to xxxxx@lists.osr.com