Намертво и при этом на многопроцессорной машине. Если это как то и связано с диском, то скорее всего какой то драйвер блокирует все ядра в ISR или DPC. Но это может быть и чего нибудь связанное со спинлоками (что более вероятно, ибо нечто подобное у меня наблюдалось с проактивной защитой аутпоста пару лет назад — снес к чертям как только вычислил).
Собственно, искать гада стоит начинать с установки
WPT Kit
Так как проблема появляется нечасто, то придется постоянно крутить circular logging. Запускаем из elevated консоли:
xperf -on latency -stackwalk profile -maxfile 128 -filemode circular
Естественно, некоторая часть ресурсов будет отъедаться на постоянную запись лога, но по личным наблюдениям оно не особо мешает даже на относительно слабом low-middle end ноуте более чем двухлетней давности.
После того, как проблема зарепродюсится, нужно запустить из элевейченной консоли:
xperf -d trace.etl
Потом делаем
xperf trace.etl
для открытия лога и можно приступать к анализу. Первым делом стоит найти проблемный участок и сделать zoom на него. После этого прописать в символах
SRV*c:\downstore*http://msdl.microsoft.com/download/symbols
и вывести «Summary table» на «Stack counts by type». С очень большой вероятностью можно будет обнаружить странности уже там.
Также стоит взглянуть на «Summary table» для «DPC CPU Usage» и «Interrupt CPU Usage». Вообще говоря полуофициальное требование к длительности ISR — не более 10 мкс, DPC — не более 25 мкс. Средние значения длительностей ISR и DPC должны быть близки к этим, пиковое значение может быть в районе миллисекунд или даже десятков миллисекунд. Если там сотни-тысячи — это уже проблема.
В общем, удачной охоты.