Reply to thread

Just to show what I'm looking at during analysis.


Attached is a screenshot of what I believe are the relevant graphs in MXA. The top graph shows ISR/DPC storms and the green lines show points in time where a group of ISRs and DPCs ran long enough to cause audible interruptions in the audio output stream - a green vertical line going above the red horizontal line and into the red area at the top.


The middle graph is the Windows scheduler and I've filtered it to show only activity on core 0 which is the core running the audio output stream.


The bottom graph is the callstack graph which I believe are samples of the callstack of the thread running on a core taken at regular intervals. It's not precise but the samples are taken frequently enough to where it can catch a relevant callstack. There's some luck involved, though.


If I zoom in on one of the green spikes in the top graph (2nd attached picture) the pink box in the middle graph shows an ndis.sys DPC running for almost 3 milliseconds which is far longer than any other ISR/DPC for that 10 millisecond period. The third picture is the same screenshot with all ISR/DPCs showing.


Focusing on the ndis DPC, I look through the callstacks on core 0 in the bottom graph shortly before and during the time that DPC is running. The spike I focused on in the screenshots is an example where the sampling didn't catch the call, unfortunately.


Zooming in on other spikes in the ISR/DPC storm graph, though, I do see some callstacks using ndis.sys which are leaving me confused. For example:


[CODE]0 / 1

Callstack at time 3898770500 - Not matched - Forzahorizon5 <ForzaHorizon5.exe> (PID-5808) - Thread-1168 (ForzaHorizon5.exe!0x7FF7E4302AC0) - Unit:# 7676

ntoskrnl.exe!KiExitDispatcher

ntoskrnl.exe!KeSetEvent

afd.sys!AfdReceiveDatagramEventCommonHandler

afd.sys!AfdTLDgramReceiveEventHandler

tcpip.sys!UdpDeliverDatagrams

tcpip.sys!UdpReceiveDatagrams

tcpip.sys!UdpNlClientReceiveDatagrams

tcpip.sys!IpFlcReceivePreValidatedPackets

tcpip.sys!FlReceiveNetBufferListChainCalloutRoutine

ntoskrnl.exe!KeExpandKernelStackAndCalloutInternal

ntoskrnl.exe!KeExpandKernelStackAndCalloutEx

tcpip.sys!NetioExpandKernelStackAndCallout

tcpip.sys!FlReceiveNetBufferListChain

ndis.sys!ndisMIndicateNetBufferListsToOpen

ndis.sys!ndisMTopReceiveNetBufferLists

ndis.sys!ndisCallReceiveHandler

ndis.sys!ndisInvokeNextReceiveHandler

ndis.sys!NdisMIndicateReceiveNetBufferLists

e1d.sys!0xFFFFF802A48F9BAB

e1d.sys!0xFFFFF802A48FAEB0

e1d.sys!0xFFFFF802A4900EE0

e1d.sys!0xFFFFF802A4903272

e1d.sys!0xFFFFF802A49026C2

ndis.sys!ndisMiniportDpc

ndis.sys!ndisQueuedMiniportDpcWorkItem

ndis.sys!ndisPeriodicReceivesTimer

ntoskrnl.exe!KiExecuteAllDpcs

ntoskrnl.exe!KiRetireDpcList

ntoskrnl.exe!KxRetireDpcList

ntoskrnl.exe!KiDispatchInterruptContinue

ntoskrnl.exe!KiDpcInterruptBypass

ntoskrnl.exe!KiInterruptDispatchNoLockNoEtw

[/CODE]


That it's a Forzahorizon5.exe thread is irrelevant. The thread was taken over by the scheduler and it could have picked any thread. The relevant part (I think) is the callstack shows a driver with the filename e1d.sys which is making use of ndis.sys. But searches don't seem to show what I would consider reliable information about that driver. Can you do a search for that driver on your C: drive and see if you can identify what might have installed it? I can't find that driver anywhere on the two systems I have.


edit: Actually, I just noticed e1d.sys shows up as a miniport driver for the Ethernet adapter in your latest screenshot so I'm guessing it's a legitimate driver from Intel.


Back
Top