My FSD blows up occasionally in Cache Manager, when lazy-writing.
I’m wondering where cache manager gets the address that is in the EDI
register.
Here’s the call stack when it blows up:
kd> kv
ChildEBP RetAddr Args to Child
eb42fc04 80813c05 f3a0dfda 858025a0 84f674a8 nt!KiTrap0E+0x20b (FPO: [0,0]
TrapFrame @ eb42fc04)
eb42fc98 80810e7a 00000001 00000000 84da65e8 nt!CcUnmapVacbArray+0xf5 (FPO:
[Non-Fpo])
eb42fcb0 808107b3 84da6588 8099dea0 84da6588 nt!CcUnmapAndPurge+0x1c (FPO:
[1,0,3])
eb42fcdc 8080e5d7 00000001 808742c0 84ec7828 nt!CcDeleteSharedCacheMap+0x12d
(FPO: [Non-Fpo])
eb42fd0c 80812b5c 85df57e8 80874760 85df9420 nt!CcWriteBehind+0x30f (FPO:
[Non-Fpo])
eb42fd78 80816bfa 85df57e8 00000000 00000000 nt!CcWorkerThread+0x12c (FPO:
[Non-Fpo])
eb42fda8 80854ab2 85df57e8 00000000 00000000 nt!ExpWorkerThread+0xae (FPO:
[Non-Fpo])
eb42fddc 808692a2 80816b4c 00000000 00000000 nt!PspSystemThreadStartup+0x54
(FPO: [Non-Fpo])
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
here’s the regs in the trap:
kd> .trap eb42fc04
ErrCode = 00000000
eax=00000000 ebx=000c0000 ecx=84da65b8 edx=00000000 esi=84da6588
edi=01bd0760
eip=80813c05 esp=eb42fc78 ebp=eb42fc98 iopl=0 nv up ei pl zr na po
nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000
efl=00010246
nt!CcUnmapVacbArray+0xf5:
80813c05 66394708 cmp [edi+0x8],ax
ds:0023:01bd0768=???
The address in the EDI register (0x01bd0760) happens to be an address that
the user mode
portion of my stuff allocated for a structure that it maintains.
If anyone has any idea what might be going on here, well I’m all ears!
Thanks
Greg