IRP with same device in two IO Stack Locations

Hi,
We have an IRP where fnic2k12 device is seen in two IO stack location:

0: kd> !irp fffffab2d89c2c60 ff
Irp is active with 5 stacks 3 is current (= 0xfffffab2d89c2dc0)
Mdl=fffffab1e7ea36f0: No System Buffer: Thread 00000000: Irp stack
trace.
Flags = 00000000
ThreadListEntry.Flink = fffffab2d89c2c80
ThreadListEntry.Blink = fffffab2d89c2c80
IoStatus.Status = 00000000
IoStatus.Information = 00000000
RequestorMode = 00000000
Cancel = 00
CancelIrql = 0
ApcEnvironment = 00
UserIosb = fffff8800fd098c0
UserEvent = fffff8800fd098e8
Overlay.AsynchronousParameters.UserApcRoutine = 00000000
Overlay.AsynchronousParameters.UserApcContext = 00000000
Overlay.AllocationSize = 00000000 - 00000000
CancelRoutine = 00000000
UserBuffer = 00000000
&Tail.Overlay.DeviceQueueEntry = fffffab2d89c2cd8
Tail.Overlay.Thread = 00000000
Tail.Overlay.AuxiliaryBuffer = 00000000
Tail.Overlay.ListEntry.Flink = 00000000
Tail.Overlay.ListEntry.Blink = 00000000
Tail.Overlay.CurrentStackLocation = fffffab2d89c2dc0
Tail.Overlay.OriginalFileObject = 00000000
Tail.Apc = 00000000
Tail.CompletionKey = 00000000
cmd flg cl Device File Completion-Context
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000

Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000

Args: 00000000 00000000 00000000 00000000

[IRP_MJ_INTERNAL_DEVICE_CONTROL(f), N/A(0)]
0 e1 fffffab0018877f0 00000000
fffff88000f49680-fffff8800fd08dc0 Success Error Cancel pending
\Driver\fnic2k12 EmcpMpx!PowerWinIrpCompletion
Args: fffffab003d55c20 00000000 00000000 fffffab001887940
[IRP_MJ_INTERNAL_DEVICE_CONTROL(f), N/A(0)]
0 e1 fffffab0018877f0 00000000
fffff88000affc84-fffff8800fd09560 Success Error Cancel pending
\Driver\fnic2k12 EmcpBase!PowerWinIrpCompletion
Args: fffffab003d55c20 00000000 00000000 fffffab0f4272260
[IRP_MJ_INTERNAL_DEVICE_CONTROL(f), N/A(0)]
0 e0 fffffab001963cc0 00000000
fffff88001b0d1a0-fffffab003d55c20 Success Error Cancel
\Driver\EmcpBase CLASSPNP!ClasspSendSynchronousCompletion
Args: fffffab003d55c20 00000000 00000000 00000000

Is it possible scenario?
Its thread id is also 0. So what is the state of IRP?
To which device it should belongs currently.

Thanks
Ash

Looks like the same device but with completion routines in two different
drivers (EmcpBase passed the IRP to EmcpMpx). Based on this output fnic2k12
still owns the IRP.

Not all IRPs need to have the thread field populated, it’s up to the creator
of the IRP.

The IRP is pending somewhere in fnic2k12. I’d check the system process and
see if there are any threads working in that driver:

!process 0 F System

-scott
OSR
@OSRDrivers

“Ashish Goyal” wrote in message
news:xxxxx@ntfsd…

Hi,
We have an IRP where fnic2k12 device is seen in two IO stack location:

0: kd> !irp fffffab2d89c2c60 ff
Irp is active with 5 stacks 3 is current (= 0xfffffab2d89c2dc0)
Mdl=fffffab1e7ea36f0: No System Buffer: Thread 00000000: Irp stack trace.
Flags = 00000000
ThreadListEntry.Flink = fffffab2d89c2c80
ThreadListEntry.Blink = fffffab2d89c2c80
IoStatus.Status = 00000000
IoStatus.Information = 00000000
RequestorMode = 00000000
Cancel = 00
CancelIrql = 0
ApcEnvironment = 00
UserIosb = fffff8800fd098c0
UserEvent = fffff8800fd098e8
Overlay.AsynchronousParameters.UserApcRoutine = 00000000
Overlay.AsynchronousParameters.UserApcContext = 00000000
Overlay.AllocationSize = 00000000 - 00000000
CancelRoutine = 00000000
UserBuffer = 00000000
&Tail.Overlay.DeviceQueueEntry = fffffab2d89c2cd8
Tail.Overlay.Thread = 00000000
Tail.Overlay.AuxiliaryBuffer = 00000000
Tail.Overlay.ListEntry.Flink = 00000000
Tail.Overlay.ListEntry.Blink = 00000000
Tail.Overlay.CurrentStackLocation = fffffab2d89c2dc0
Tail.Overlay.OriginalFileObject = 00000000
Tail.Apc = 00000000
Tail.CompletionKey = 00000000
cmd flg cl Device File Completion-Context
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000

Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000

Args: 00000000 00000000 00000000 00000000
>[IRP_MJ_INTERNAL_DEVICE_CONTROL(f), N/A(0)]
0 e1 fffffab0018877f0 00000000 fffff88000f49680-fffff8800fd08dc0
Success Error Cancel pending
\Driver\fnic2k12 EmcpMpx!PowerWinIrpCompletion
Args: fffffab003d55c20 00000000 00000000 fffffab001887940
[IRP_MJ_INTERNAL_DEVICE_CONTROL(f), N/A(0)]
0 e1 fffffab0018877f0 00000000 fffff88000affc84-fffff8800fd09560
Success Error Cancel pending
\Driver\fnic2k12 EmcpBase!PowerWinIrpCompletion
Args: fffffab003d55c20 00000000 00000000 fffffab0f4272260
[IRP_MJ_INTERNAL_DEVICE_CONTROL(f), N/A(0)]
0 e0 fffffab001963cc0 00000000 fffff88001b0d1a0-fffffab003d55c20
Success Error Cancel
\Driver\EmcpBase CLASSPNP!ClasspSendSynchronousCompletion
Args: fffffab003d55c20 00000000 00000000 00000000

Is it possible scenario?
Its thread id is also 0. So what is the state of IRP?
To which device it should belongs currently.

Thanks
Ash