I can easily reproduce the following bugcheck on a 4 CPU / 8GB x64 Windows XP
system. Driver Verifier doesn't catch it. Is it a bug in NVIDIA's nvata64.sys
or in x64 Windows kernel itself or my driver corrupts PFN database / page
tables?
2: kd> !analyze -v
*****************************************************************************
**
*
*
* Bugcheck Analysis
*
*
*
*****************************************************************************
**
PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by
try-except,
it must be protected by a Probe. Typically the address is just plain bad or
it
is pointing at freed memory.
Arguments:
Arg1: ffffffff82df5000, memory referenced.
Arg2: 0000000000000000, value 0 = read operation, 1 = write operation.
Arg3: fffff80001060236, If non-zero, the instruction address which referenced
the bad memory
address.
Arg4: 0000000000000005, (reserved)
Debugging Details:
READ_ADDRESS: ffffffff82df5000
FAULTING_IP:
nt!MmProbeAndLockPages+907
fffff800`01060236 410fb606 movzx eax,byte ptr [r14]
MM_INTERNAL_CODE: 5
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: 0x50
CURRENT_IRQL: 0
LAST_CONTROL_TRANSFER: from fffff800010a3f31 to fffff800010501d0
STACK_TEXT:
fffffadf286ccc08 fffff800010a3f31 : 0000000000000050 ffffffff82df5000
0000000000000000 fffffadf286ccce0 : nt!KeBugCheckEx
fffffadf286ccc10 fffff8000104ee19 : 000000000000000a fffffadf37e72670
0000000000000000 fffffadf286cd2f0 : nt!MmAccessFault+0x399
fffffadf286ccce0 fffff80001060236 : 0000000000000000 0000000000000100
0000000074707249 fffffadf38bcf148 : nt!KiPageFault+0x119
fffffadf286cce70 fffffadf28204d79 : fffffadf36865990 0000000000000000
fffffaaf00000001 0000000000000000 : nt!MmProbeAndLockPages+0x907
fffffadf286ccf50 fffffadf28205c87 : 0000000000000001 0000000000000000
fffffadf368d2730 fffffaaf091d6e98 : nvata64+0xed79
fffffadf286ccfa0 fffffadf281f7994 : 0000000000000000 fffffadf385f6430
0000000000000000 0000000000000000 : nvata64+0xfc87
fffffadf286cd0a0 fffff800013c6255 : 01c68f4491828afc fffffaaf091d6c60
fffffadf283aa8d5 fffffadf283aa8d5 : nvata64+0x1994
fffffadf286cd110 fffffadf283aa8d5 : 0000000000000000 fffffaaf091d6c60
fffffadf386dee60 fffffaaf091d6c60 : nt!IovCallDriver+0x1b5
fffffadf286cd180 fffff800013c6255 : 0000000000000000 fffffadf368878e0
fffffaaf091d6c60 fffffadf386dee60 : ACPI!ACPIDispatchIrp+0xb5
fffffadf286cd1f0 fffff800013c6255 : 0000000000000002 fffffaaf091d6c60
fffffadf261af57b fffffadf37471130 : nt!IovCallDriver+0x1b5
fffffadf286cd260 fffffadf261af57b : 0000000000000000 fffffaaf091d6c60
01c68f4491828afc 0000000000000000 : nt!IovCallDriver+0x1b5
fffffadf286cd2d0 fffffadf261b28f3 : 0000000000000000 fffffaaf091d6ee0
fffffadf385eb190 fffffaaf091d6c60 : imapi!ImapiDefaultIrpHandler+0x9b
fffffadf286cd310 fffff800013c6255 : fffffadf37471010 fffffadf286cd3f0
fffffaaf091d6c60 fffffadf385eb040 : imapi!ImapiDispatchIoctl+0xb23
fffffadf286cd3c0 fffff800013c6255 : 00002c59d30b9771 fffffaaf091d6c60
fffffadf281c5518 fffffadf373cfc60 : nt!IovCallDriver+0x1b5
fffffadf286cd430 fffffadf281c5518 : 0000000000000000 fffffaaf091d6c60
fffffadf00000130 000000000004d014 : nt!IovCallDriver+0x1b5
fffffadf286cd4a0 fffffadf261980d1 : 0000000000000000 fffffadf00000000
0000000000000401 fffffadf37e72060 : CLASSPNP!ClassDeviceControl+0xf73
fffffadf286cd5c0 fffff800013c6255 : 0000000000000000 fffffaaf091d6c60
fffffadf36897430 fffffadf286cd750 : cdrom!CdRomDeviceControlDispatch+0x5b1
fffffadf286cd720 fffffadf2617e197 : fffffaaf091d6f70 fffffaaf091d6c60
fffffaaf091d7000 fffffaaf091d6f70 : nt!IovCallDriver+0x1b5
fffffadf286cd790 fffff800013c6255 : fffffadf373cd450 fffffadf286cd840
fffffaaf091d6c60 fffffadf37e729c0 : redbook!RedBookDeviceControl+0x257
fffffadf286cd810 fffffadf1ca2fa13 : fffffadf373f3150 fffffaaf091d6c60
fffffadf286ce000 fffffaaf091d6c60 : nt!IovCallDriver+0x1b5
fffffadf286cd880 fffffadf1ca213ce : fffffadf373f3150 fffffadf286cd960
fffffaaf091d6fb8 0000000000000001 : Cdfs!CdCommonDevControl+0xe3
fffffadf286cd8b0 fffff800013c6255 : fffffaaf091d6c60 fffffaaf091d6c60
fffffadf37281130 fffffaaf091d6c60 : Cdfs!CdFsdDispatch+0x379
fffffadf286cd930 fffffadf2818c962 : 0000000000000000 fffffaaf091d6c60
0000000000000000 fffffaaf091d6c60 : nt!IovCallDriver+0x1b5
fffffadf286cd9a0 fffff800013c6255 : fffffaaf091d7000 fffffaaf091d6c60
fffffadf376ace80 fffffadf373f2cd0 : fltMgr!FltpDispatch+0x1c2
fffffadf286cda00 fffff8000129abc0 : 0000000000000130 fffffaaf091d6c60
0000000000000000 0000000000000101 : nt!IovCallDriver+0x1b5
fffffadf286cda70 fffff8000129ac76 : fffffadf374d9b60 0000000000000000
0000000000000000 0000000000000000 : nt!IopXxxControlFile+0xa69
fffffadf286cdb90 fffff8000104fce2 : 00000000fff44000 0000000000000000
000000007d9504ae fffffadf286cdcf0 : nt!NtDeviceIoControlFile+0x56
fffffadf286cdc00 0000000078b83e48 : 0000000000000000 0000000000000000
0000000000000000 0000000000000000 : nt!KiSystemServiceCopyEnd+0x3
000000000c4ff098 0000000000000000 : 0000000000000000 0000000000000000
0000000000000000 0000000000000000 : 0x78b83e48
STACK_COMMAND: kb
FOLLOWUP_IP:
nvata64+ed79
fffffadf`28204d79 eb02 jmp nvata64+0xed7d (fffffadf28204d7d)
FAULTING_SOURCE_CODE:
SYMBOL_STACK_INDEX: 4
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: nvata64+ed79
MODULE_NAME: nvata64
IMAGE_NAME: nvata64.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 431f6a9b
FAILURE_BUCKET_ID: X64_0x50_VRF_nvata64+ed79
BUCKET_ID: X64_0x50_VRF_nvata64+ed79
Followup: MachineOwner
My additional WinDbg commands:
2: kd> dt nt!_mdl fffffadf36865990 nt!_MDL +0x000 Next : (null) +0x008 Size : 56 +0x00a MdlFlags : 8 +0x010 Process : 0xfffffadf36871b30 _EPROCESS
+0x018 MappedSystemVa : 0xfffffadf2150c000 +0x020 StartVa : 0xffffffff82df5000
+0x028 ByteCount : 0x1000
+0x02c ByteOffset : 0
2: kd> !vtop 0xfffffadf`2150c000
Pdi 0 Pti 0
physical read at 00000000fffff000 failed
2: kd> !pte 0xffffffff`82df5000
VA ffffffff82df5000
PXE @ FFFFF6FB7DBEDFF8 PPE at FFFFF6FB7DBFFFF0 PDE at FFFFF6FB7FFFE0B0
PTE at FFFFF6FFFFC16FA8
contains 0000000000073063 contains 0000000000000000
pfn 73 ---DA--KWEV
2: kd> !verifier 1
Verify Level d0 ... enabled options are:
Io subsystem checking enabled
Enhanced Io checking enabled
DMA checking enabled
Summary of All Verifier Statistics
RaiseIrqls 0x199ab
AcquireSpinLocks 0x4c443
Synch Executions 0x1a034
Trims 0x0
Pool Allocations Attempted 0x16ea6
Pool Allocations Succeeded 0x16ea6
Pool Allocations Succeeded SpecialPool 0x4d
Pool Allocations With NO TAG 0x0
Pool Allocations Failed 0x0
Resource Allocations Failed Deliberately 0x0
Current paged pool allocations 0x0 for 00000000 bytes
Peak paged pool allocations 0x0 for 00000000 bytes
Current nonpaged pool allocations 0x0 for 00000000 bytes
Peak nonpaged pool allocations 0x0 for 00000000 bytes
Driver Verification List
Entry State NonPagedPool PagedPool Module
fffffadf38bca0e0 Loaded 00000000 00000000 nvata64.sys
fffffadf38bca950 Loaded 00000000 00000000 imapi.sys
Dmitriy Budko
VMware