KERNEL_DATA_INPAGE_ERROR (7a)

Hi,

We are developing PCI express driver. I am getting KERNEL_DATA_INPAGE_ERROR (0x7a)
and the stack information are as follows from windbg.

I have specified the symbol path properly. Still windbg showed that symbol could not
be loaded. In stack, my driver information displayed as below.

9a739b2c 8ac17a2e 7b62c3b0 8521b1c8 00000040 PcieIf+0xf918
9a739b50 804e2ba4 7acbd1e8 7b62c3b0 00000004 PcieIf+0x4a2e

  1. Please tell me how to check the line of code from “PcieIf+0xf918”.
    Is there any other tool or any other way to know line of code corresponding
    to “PcieIf+0xf918”. Please share your ideas.

  2. In this bugcheck 0x7a, parameter2 is d0000006.
    In WDK documentation and ntstatus.h file, information is not provided for d0000006.
    Please share your ideas.

Thanks & Regards,
Raphel

Log and Stack information from WINDBG

Microsoft (R) Windows Debugger Version 6.8.0004.0 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Loading Dump File [G:\raphel\MainDriver_unittesting\Logs\Driver_mar27_dmp\MEMORY.DMP]
Kernel Summary Dump File: Only kernel address space is available

Symbol search path is: G:\raphel\MainDriver_unittesting\FITBoard_SystemTesting\FIT_Main_Drv_Rel_Mar19\MainDrv_Release_19March2008

\MAIN_DRIVER\Source\src\objchk_wlh_x86\i386\PCIeIf.pdb

Executable search path is: G:\raphel\MainDriver_unittesting\FITBoard_SystemTesting\FIT_Main_Drv_Rel_Mar19\MainDrv_Release_19March2008

\MAIN_DRIVER\Source\src\objchk_wlh_x86\i386\PCIeIf.sys
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrpamp.exe -
Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 6000.16386.x86fre.vista_rtm.061101-2205
Kernel base = 0x81c00000 PsLoadedModuleList = 0x81d11db0
Debug session time: Thu Mar 27 20:05:42.583 2008 (GMT+9)
System Uptime: 0 days 3:55:36.443
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrpamp.exe -
Loading Kernel Symbols

Loading User Symbols
PEB is paged out (Peb.Ldr = 7ffdd00c). Type “.hh dbgerr001” for details
Loading unloaded module list

0: kd>
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

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: 00000001, lock type that was held (value 1,2,3, or PTE address)
Arg2: d0000006, error status (normally i/o status code)
Arg3: 84678b20, current process (virtual address for lock type 3, or PTE)
Arg4: c0047000, virtual address that could not be in-paged (or PTE contents if arg1 is a PTE address)

Debugging Details:

*** ERROR: Module load completed but symbols could not be loaded for PcieIf.sys
*** ERROR: Module load completed but symbols could not be loaded for Wdf01000.sys
***** Kernel symbols are WRONG. Please fix symbols to do analysis.

Page 5d0e1 not present in the dump file. Type “.hh dbgerr004” for details
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: nt!_KPRCB ***
*** ***
*************************************************************************
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: nt!_KPRCB ***
*** ***
*************************************************************************

PEB is paged out (Peb.Ldr = 7ffdd00c). Type “.hh dbgerr001” for details

PEB is paged out (Peb.Ldr = 7ffdd00c). Type “.hh dbgerr001” for details

FAULTING_MODULE: 81c00000 nt

DEBUG_FLR_IMAGE_TIMESTAMP: 47d5f294

ERROR_CODE: (NTSTATUS) 0xd0000006 - 0x%08lx

BUGCHECK_STR: 0x7a_d0000006

DEFAULT_BUCKET_ID: WRONG_SYMBOLS

LAST_CONTROL_TRANSFER: from 81cbb1da to 81c263d2

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
9a7399c4 81cbb1da c0047000 84678b20 00000000 nt!CcGetDirtyPages+0x7f8
9a7399e8 81c15137 84678b20 00000000 84b4db60 nt!MmUnmapLockedPages+0x762
9a739a30 81dd3606 08f70000 84071c7c 00000000 nt!FsRtlAllocateFileLock+0x19c
9a739a74 81cba69b 84071c60 00000000 08f70000 nt!MmUnsecureVirtualMemory+0x529
9a739ad0 8ac22918 84071c60 00000001 00000000 nt!MmMapLockedPagesSpecifyCache+0x29
9a739b2c 8ac17a2e 7b62c3b0 8521b1c8 00000040 PcieIf+0xf918
9a739b50 804e2ba4 7acbd1e8 7b62c3b0 00000004 PcieIf+0x4a2e
9a739b74 804e3f7c 7acbd1e8 7b62c3b0 00000004 Wdf01000+0x3eba4
9a739ba4 804e6598 7b62c3b0 849d3c48 85342e10 Wdf01000+0x3ff7c
9a739bc0 804e7d2c 85342e00 8050d188 85342e10 Wdf01000+0x42598
9a739bdc 804e8e67 00000000 83b9f390 853bf7d0 Wdf01000+0x43d2c
9a739c00 804d7d9a 83eb7f40 9a739c24 81c27ecf Wdf01000+0x44e67
9a739c0c 81c27ecf 853bf7d0 83eb7f40 83eb7f40 Wdf01000+0x33d9a
9a739c24 81d88f65 83b9f390 83eb7f40 83eb7fd4 nt!IofCallDriver+0x64
9a739c44 81d89f25 853bf7d0 83b9f390 00129100 nt!IoIsFileObjectIgnoringSharing+0x344d
9a739ce0 81d8ee8d 853bf7d0 83eb7f40 00000000 nt!IoIsFileObjectIgnoringSharing+0x440d
9a739d14 81c8c96a 00000744 00000000 00000000 nt!NtDeviceIoControlFile+0x2a
9a739d44 77640f34 badb0d00 001290e8 0000fcfc nt!KeReleaseInStackQueuedSpinLockFromDpcLevel+0xba2
9a739d48 badb0d00 001290e8 0000fcfc 00fcfcfc 0x77640f34
9a739d4c 001290e8 0000fcfc 00fcfcfc 00fcfcfc 0xbadb0d00
9a739d50 00000000 00fcfcfc 00fcfcfc 00fcfcfc 0x1290e8

STACK_COMMAND: kb

FOLLOWUP_IP:
PcieIf+f918
8ac22918 8945fc mov dword ptr [ebp-4],eax

SYMBOL_STACK_INDEX: 5

SYMBOL_NAME: PcieIf+f918

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: PcieIf

IMAGE_NAME: PcieIf.sys

BUCKET_ID: WRONG_SYMBOLS

Followup: MachineOwner

Obviously you have not specified the symbol path correctly.

“Symbol search path is:
G:\raphel\MainDriver_unittesting\FITBoard_SystemTesting\FIT_Main_Drv_Rel_Mar19\MainDrv_Release_19March2008
\MAIN_DRIVER\Source\src\objchk_wlh_x86\i386\PCIeIf.pdb”

That looks totally skronked.

Here is a good symbol path:
1: kd> .sympath
Symbol search path is: z:\testsymbols;srv*D:\Local\Symbols\Public*
http://msdl.microsoft.com/download/symbols
When I build a driver I move the .sys file and the .pdb file to the local
directory z:\testsymbols, which is in my debugger symbol search path. The
next symbol search path element is the public symbol server at Microsoft and
my local cache at D:\local\Symbols\Public. I also run a local symbol server
on my network (not shown in this example to keep things simple.)

So the standard practice for good symbols is to have a minimum of two
elements in your symbol path:

  1. a local directory for frequently changing executibles - which you have to
    manually keep up to date with what is actually executing on your test system
  2. the public Microsoft symbol server for access to good symbols for
    standard Windows components, with a local directory for caching those
    symbols.

Reconfigure and try again.

On Thu, Mar 27, 2008 at 10:47 PM, wrote:

> Hi,
>
> We are developing PCI express driver. I am getting
> KERNEL_DATA_INPAGE_ERROR (0x7a)
> and the stack information are as follows from windbg.
>
> I have specified the symbol path properly. Still windbg showed that symbol
> could not
> be loaded. In stack, my driver information displayed as below.
>
> 9a739b2c 8ac17a2e 7b62c3b0 8521b1c8 00000040 PcieIf+0xf918
> 9a739b50 804e2ba4 7acbd1e8 7b62c3b0 00000004 PcieIf+0x4a2e
>
> 1. Please tell me how to check the line of code from “PcieIf+0xf918”.
> Is there any other tool or any other way to know line of code
> corresponding
> to “PcieIf+0xf918”. Please share your ideas.
>
> 2. In this bugcheck 0x7a, parameter2 is d0000006.
> In WDK documentation and ntstatus.h file, information is not provided
> for d0000006.
> Please share your ideas.
>
> Thanks & Regards,
> Raphel
>
> Log and Stack information from WINDBG
> -----------------------------------------------
> Microsoft (R) Windows Debugger Version 6.8.0004.0 http:</http:> X86
> Copyright (c) Microsoft Corporation. All rights reserved.
>
> Loading Dump File
> [G:\raphel\MainDriver_unittesting\Logs\Driver_mar27_dmp\MEMORY.DMP]
> Kernel Summary Dump File: Only kernel address space is available
>
> Symbol search path is:
> G:\raphel\MainDriver_unittesting\FITBoard_SystemTesting\FIT_Main_Drv_Rel_Mar19\MainDrv_Release_19March2008
>
> \MAIN_DRIVER\Source\src\objchk_wlh_x86\i386\PCIeIf.pdb
>
> Executable search path is:
> G:\raphel\MainDriver_unittesting\FITBoard_SystemTesting\FIT_Main_Drv_Rel_Mar19\MainDrv_Release_19March2008
>
> \MAIN_DRIVER\Source\src\objchk_wlh_x86\i386\PCIeIf.sys
> ERROR: Symbol file could not be found. Defaulted to export symbols
> for ntkrpamp.exe -
> Windows Vista Kernel Version 6000 MP (2 procs) Free x86 compatible
> Product: WinNt, suite: TerminalServer SingleUserTS
> Built by: 6000.16386.x86fre.vista_rtm.061101-2205
> Kernel base = 0x81c00000 PsLoadedModuleList = 0x81d11db0
> Debug session time: Thu Mar 27 20:05:42.583 2008 (GMT+9)
> System Uptime: 0 days 3:55:36.443
>
ERROR: Symbol file could not be found. Defaulted to export symbols
> for ntkrpamp.exe -
> Loading Kernel Symbols
>
> …
> Loading User Symbols
> PEB is paged out (Peb.Ldr = 7ffdd00c). Type “.hh dbgerr001” for details
> Loading unloaded module list
> …
> 0: kd>
> 0: kd> !analyze -v
>
>
>
>
> * Bugcheck Analysis
>
>
>
>
>

>
> 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: 00000001, lock type that was held (value 1,2,3, or PTE address)
> Arg2: d0000006, error status (normally i/o status code)
> Arg3: 84678b20, current process (virtual address for lock type 3, or PTE)
> Arg4: c0047000, virtual address that could not be in-paged (or PTE
> contents if arg1 is a PTE address)
>
> Debugging Details:
> ------------------
>
> ERROR: Module load completed but symbols could not be loaded for
> PcieIf.sys
>
ERROR: Module load completed but symbols could not be loaded for
> Wdf01000.sys
> Kernel symbols are WRONG. Please fix symbols to do analysis.
>
> Page 5d0e1 not present in the dump file. Type “.hh dbgerr004” for details
>
***************************************************************
> ******
> ******
> Your debugger is not using the correct symbols
> ******
> In order for this command to work properly, your symbol path
> must point to .pdb files that have full type information.
> ******
> Certain .pdb files (such as the public OS symbols) do not
> contain the required information. Contact the group that
> provided you with these symbols if you need this command to
> work.
> ******
> Type referenced: nt!_KPRCB
> ******
>
>

> ******
> ******
> Your debugger is not using the correct symbols
> ******
> In order for this command to work properly, your symbol path
> must point to .pdb files that have full type information.
> ******
> Certain .pdb files (such as the public OS symbols) do not
> contain the required information. Contact the group that
> provided you with these symbols if you need this command to
> work.
> ******
> Type referenced: nt!_KPRCB
> ******
> *************************************************************************
>
> PEB is paged out (Peb.Ldr = 7ffdd00c). Type “.hh dbgerr001” for details
>
> PEB is paged out (Peb.Ldr = 7ffdd00c). Type “.hh dbgerr001” for details
>
> FAULTING_MODULE: 81c00000 nt
>
> DEBUG_FLR_IMAGE_TIMESTAMP: 47d5f294
>
> ERROR_CODE: (NTSTATUS) 0xd0000006 - 0x%08lx
>
> BUGCHECK_STR: 0x7a_d0000006
>
> DEFAULT_BUCKET_ID: WRONG_SYMBOLS
>
> LAST_CONTROL_TRANSFER: from 81cbb1da to 81c263d2
>
> STACK_TEXT:
> WARNING: Stack unwind information not available. Following frames may be
> wrong.
> 9a7399c4 81cbb1da c0047000 84678b20 00000000 nt!CcGetDirtyPages+0x7f8
> 9a7399e8 81c15137 84678b20 00000000 84b4db60 nt!MmUnmapLockedPages+0x762
> 9a739a30 81dd3606 08f70000 84071c7c 00000000
> nt!FsRtlAllocateFileLock+0x19c
> 9a739a74 81cba69b 84071c60 00000000 08f70000
> nt!MmUnsecureVirtualMemory+0x529
> 9a739ad0 8ac22918 84071c60 00000001 00000000
> nt!MmMapLockedPagesSpecifyCache+0x29
> 9a739b2c 8ac17a2e 7b62c3b0 8521b1c8 00000040 PcieIf+0xf918
> 9a739b50 804e2ba4 7acbd1e8 7b62c3b0 00000004 PcieIf+0x4a2e
> 9a739b74 804e3f7c 7acbd1e8 7b62c3b0 00000004 Wdf01000+0x3eba4
> 9a739ba4 804e6598 7b62c3b0 849d3c48 85342e10 Wdf01000+0x3ff7c
> 9a739bc0 804e7d2c 85342e00 8050d188 85342e10 Wdf01000+0x42598
> 9a739bdc 804e8e67 00000000 83b9f390 853bf7d0 Wdf01000+0x43d2c
> 9a739c00 804d7d9a 83eb7f40 9a739c24 81c27ecf Wdf01000+0x44e67
> 9a739c0c 81c27ecf 853bf7d0 83eb7f40 83eb7f40 Wdf01000+0x33d9a
> 9a739c24 81d88f65 83b9f390 83eb7f40 83eb7fd4 nt!IofCallDriver+0x64
> 9a739c44 81d89f25 853bf7d0 83b9f390 00129100
> nt!IoIsFileObjectIgnoringSharing+0x344d
> 9a739ce0 81d8ee8d 853bf7d0 83eb7f40 00000000
> nt!IoIsFileObjectIgnoringSharing+0x440d
> 9a739d14 81c8c96a 00000744 00000000 00000000 nt!NtDeviceIoControlFile+0x2a
> 9a739d44 77640f34 badb0d00 001290e8 0000fcfc
> nt!KeReleaseInStackQueuedSpinLockFromDpcLevel+0xba2
> 9a739d48 badb0d00 001290e8 0000fcfc 00fcfcfc 0x77640f34
> 9a739d4c 001290e8 0000fcfc 00fcfcfc 00fcfcfc 0xbadb0d00
> 9a739d50 00000000 00fcfcfc 00fcfcfc 00fcfcfc 0x1290e8
>
>
> STACK_COMMAND: kb
>
> FOLLOWUP_IP:
> PcieIf+f918
> 8ac22918 8945fc mov dword ptr [ebp-4],eax
>
> SYMBOL_STACK_INDEX: 5
>
> SYMBOL_NAME: PcieIf+f918
>
> FOLLOWUP_NAME: MachineOwner
>
> MODULE_NAME: PcieIf
>
> IMAGE_NAME: PcieIf.sys
>
> BUCKET_ID: WRONG_SYMBOLS
>
> Followup: MachineOwner
> ---------
>
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>


Mark Roddy