Description
My friend Special Pool is complaining about this. Looks like IopGetDeviceNode is either returning an already freed node, or not correctly giving the caller a reference to prevent it from being destroyed concurrently.
kd> kp
|
ChildEBP RetAddr
|
f392c6a4 8054e666 nt!DbgUserBreakPoint
|
f392c6ac 804c56c4 nt!RtlAssert(void * FailedAssertion = 0x805dfc60, void * FileName = 0x805dfc3c, unsigned long LineNumber = 0x339, char * Message = 0x00000000 "")+0x46 [c:\ros\reactos-clean\reactos\lib\rtl\assert.c @ 119]
|
f392c73c 804c71fd nt!MiResolvePageFileFault(unsigned char StoreInstruction = 0x00 '', void * FaultingAddress = 0xf3f2bf5c, struct _MMPTE * PointerPte = 0xc03cfcac, struct _EPROCESS * CurrentProcess = 0x00000000, unsigned char * OldIrql = 0xf392c84b "???")+0x54 [c:\ros\reactos-clean\reactos\ntoskrnl\mm\arm3\pagfault.c @ 825]
|
f392c860 804c7df8 nt!MiDispatchFault(unsigned char StoreInstruction = 0x00 '', void * Address = 0xf3f2bf5c, struct _MMPTE * PointerPte = 0xc03cfcac, struct _MMPTE * PointerProtoPte = 0x00000000, unsigned char Recursive = 0x00 '', struct _EPROCESS * Process = 0x00000000, void * TrapInformation = 0xf392c9bc, struct _MMVAD * Vad = 0x00000000)+0xbfd [c:\ros\reactos-clean\reactos\ntoskrnl\mm\arm3\pagfault.c @ 1444]
|
f392c964 804f1efe nt!MmArmAccessFault(unsigned char StoreInstruction = 0x00 '', void * Address = 0xf3f2bf5c, char Mode = 0n0 '', void * TrapInformation = 0xf392c9bc)+0x898 [c:\ros\reactos-clean\reactos\ntoskrnl\mm\arm3\pagfault.c @ 1865]
|
f392c980 8053e953 nt!MmAccessFault(unsigned char StoreInstruction = 0x00 '', void * Address = 0xf3f2bf5c, char Mode = 0n0 '', void * TrapInformation = 0xf392c9bc)+0xce [c:\ros\reactos-clean\reactos\ntoskrnl\mm\mmfault.c @ 243]
|
f392c9b4 804036df nt!KiTrap0EHandler(struct _KTRAP_FRAME * TrapFrame = 0xf392c9bc)+0x1c3 [c:\ros\reactos-clean\reactos\ntoskrnl\ke\i386\traphdlr.c @ 1277]
|
f392c9b4 8049289c nt!KiTrap0E+0x8f
|
f392caac 8057aea6 nt!IopEnumerateDevice(struct _DEVICE_OBJECT * DeviceObject = 0xf399bf10)+0x24c [c:\ros\reactos-clean\reactos\ntoskrnl\io\pnpmgr\pnpmgr.c @ 2344]
|
f392cbfc 8043bdd1 nt!IoInitSystem(struct _LOADER_PARAMETER_BLOCK * LoaderBlock = 0x80201000)+0x326 [c:\ros\reactos-clean\reactos\ntoskrnl\io\iomgr\iomgr.c @ 566]
|
f392cd7c 8043c70c nt!Phase1InitializationDiscard(void * Context = 0x80201000)+0x9d1 [c:\ros\reactos-clean\reactos\ntoskrnl\ex\init.c @ 1798]
|
f392cd88 80520601 nt!Phase1Initialization(void * Context = 0x80201000)+0xc [c:\ros\reactos-clean\reactos\ntoskrnl\ex\init.c @ 2012]
|
f392cdbc 8053c8c1 nt!PspSystemThreadStartup(<function> * StartRoutine = 0x8043c700, void * StartContext = 0x80201000)+0x91 [c:\ros\reactos-clean\reactos\ntoskrnl\ps\thread.c @ 156]
|
f392cddc 8052056f nt!KiThreadStartup(void)+0x61 [c:\ros\reactos-clean\reactos\ntoskrnl\ke\i386\thrdini.c @ 78]
|
f392cde0 8043c6ff nt!PspUnhandledExceptionInSystemThread+0xcf
|
f392cde4 80201000 nt!RtlStringCbCatExA+0xcf
|
WARNING: Frame IP not in any known module. Following frames may be wrong.
|
f392cde8 00000000 0x80201000
|
kd> ?? ChildDeviceNode
|
struct _DEVICE_NODE * 0xf3f2bed0
|
+0x000 Sibling : ????
|
+0x004 Child : ????
|
+0x008 Parent : ????
|
+0x00c LastChild : ????
|
+0x010 Level : ??
|
+0x014 Notify : ????
|
+0x018 PoIrpManager : _PO_IRP_MANAGER
|
+0x028 State : ??
|
+0x02c PreviousState : ??
|
+0x030 StateHistory : [20] ??
|
+0x080 StateHistoryEntry : ??
|
+0x084 CompletionStatus : ??
|
+0x088 PendingIrp : ????
|
+0x08c Flags : ??
|
+0x090 UserFlags : ??
|
+0x094 Problem : ??
|
+0x098 PhysicalDeviceObject : ????
|
+0x09c ResourceList : ????
|
+0x0a0 ResourceListTranslated : ????
|
+0x0a4 InstancePath : _UNICODE_STRING
|
+0x0ac ServiceName : _UNICODE_STRING
|
+0x0b4 DuplicatePDO : ????
|
+0x0b8 ResourceRequirements : ????
|
+0x0bc InterfaceType : ??
|
+0x0c0 BusNumber : ??
|
+0x0c4 ChildInterfaceType : ??
|
+0x0c8 ChildBusNumber : ??
|
+0x0cc ChildBusTypeIndex : ??
|
+0x0ce RemovalPolicy : ??
|
+0x0cf HardwareRemovalPolicy : ??
|
+0x0d0 TargetDeviceNotify : _LIST_ENTRY
|
+0x0d8 DeviceArbiterList : _LIST_ENTRY
|
+0x0e0 DeviceTranslatorList : _LIST_ENTRY
|
+0x0e8 NoTranslatorMask : ??
|
+0x0ea QueryTranslatorMask : ??
|
+0x0ec NoArbiterMask : ??
|
+0x0ee QueryArbiterMask : ??
|
+0x0f0 OverUsed1 : <unnamed-tag>
|
+0x0f4 OverUsed2 : <unnamed-tag>
|
+0x0f8 BootResources : ????
|
+0x0fc CapabilityFlags : ??
|
+0x100 DockInfo : <unnamed-tag>
|
+0x110 DisableableDepends : ??
|
+0x114 PendedSetInterfaceState : _LIST_ENTRY
|
+0x11c LegacyBusListEntry : _LIST_ENTRY
|
+0x124 DriverUnloadRetryCount : ??
|
+0x128 PreviousParent : ????
|
+0x12c DeletedChidren : ??
|
kd> ?? ChildDeviceObject
|
struct _DEVICE_OBJECT * 0xf3f53f10
|
+0x000 Type : 3
|
+0x002 Size : 0xc0
|
+0x004 ReferenceCount : 0
|
+0x008 DriverObject : 0xf3967f38 _DRIVER_OBJECT
|
+0x00c NextDevice : 0xf3d3ff10 _DEVICE_OBJECT
|
+0x010 AttachedDevice : (null)
|
+0x014 CurrentIrp : (null)
|
+0x018 Timer : (null)
|
+0x01c Flags : 0x1040
|
+0x020 Characteristics : 0x80
|
+0x024 Vpb : (null)
|
+0x028 DeviceExtension : 0xf3f53fc8 Void
|
+0x02c DeviceType : 4
|
+0x030 StackSize : 1 ''
|
+0x034 Queue : <unnamed-tag>
|
+0x05c AlignmentRequirement : 0
|
+0x060 DeviceQueue : _KDEVICE_QUEUE
|
+0x074 Dpc : _KDPC
|
+0x094 ActiveThreadCount : 0
|
+0x098 SecurityDescriptor : 0xf3f59f70 Void
|
+0x09c DeviceLock : _KEVENT
|
+0x0ac SectorSize : 0
|
+0x0ae Spare1 : 0
|
+0x0b0 DeviceObjectExtension : 0xf3f53fd0 _DEVOBJ_EXTENSION
|
+0x0b4 Reserved : (null)
|
kd> ?? DeviceObject
|
struct _DEVICE_OBJECT * 0xf399bf10
|
+0x000 Type : 3
|
+0x002 Size : 0xc0
|
+0x004 ReferenceCount : 0
|
+0x008 DriverObject : 0xf3967f38 _DRIVER_OBJECT
|
+0x00c NextDevice : (null)
|
+0x010 AttachedDevice : 0xf39bfee0 _DEVICE_OBJECT
|
+0x014 CurrentIrp : (null)
|
+0x018 Timer : (null)
|
+0x01c Flags : 0x1000
|
+0x020 Characteristics : 0
|
+0x024 Vpb : (null)
|
+0x028 DeviceExtension : 0xf399bfc8 Void
|
+0x02c DeviceType : 4
|
+0x030 StackSize : 1 ''
|
+0x034 Queue : <unnamed-tag>
|
+0x05c AlignmentRequirement : 0
|
+0x060 DeviceQueue : _KDEVICE_QUEUE
|
+0x074 Dpc : _KDPC
|
+0x094 ActiveThreadCount : 0
|
+0x098 SecurityDescriptor : (null)
|
+0x09c DeviceLock : _KEVENT
|
+0x0ac SectorSize : 0
|
+0x0ae Spare1 : 1
|
+0x0b0 DeviceObjectExtension : 0xf399bfd0 _DEVOBJ_EXTENSION
|
+0x0b4 Reserved : (null)
|