Что может вызвать неожиданный захват выполнения системным процессом с идентификатором 4 на Windows? - PullRequest
0 голосов
/ 13 июля 2020

Мы работаем над стресс-тестированием приложения и заметили любопытный случай, когда ядро ​​Windows берет на себя выполнение стресс-теста. Приложение в рамках стресс-теста улавливает общесистемные события ввода-вывода, в основном CRUD файлов, с помощью драйвера минифильтра, подобного этому passthough driver .

Во время стресс-теста с использованием spddisk на одной конкретной виртуальной машине (Windows Server 2019 1809 17763.864 без внешнего антивирусного ПО или другого программного обеспечения безопасности), мы заметили, что процесс System с зарезервированным pid 4 «берет на себя» выполнение стрессовой нагрузки. Похоже, то же самое происходит и с простым пакетным скриптом (создание, чтение, удаление файла в al oop). Я никогда не видел ничего подобного ни в одной другой системе, и мы не можем воспроизвести это поведение где-либо еще, кроме этой единственной виртуальной машины.

«Захват» происходит через несколько секунд после выполнения стресс-теста и проявляется следующим образом:

  • Идентификатор процесса изменен на Зарезервированный системой pid 4
  • Идентификатор потока изменен на другой tid
  • Пользовательский SID изменен с S-1-5-21-2874696658-2485333267-3621126573-500 на S-1-5-18
  • Пользователь изменен с win-saacuiping\administrator на NT AUTHORITY\SYSTEM

Мы зафиксировали это в procmon

дамп procmon

Это похоже на своего рода песочницу, но я никогда раньше такого не видел. Упрощенная команда, используемая для стресс-тестирования:

diskspd.exe -c100b -b1K -t2 -d60 -w50 -W0 -Sh f1.tmp

Кто-нибудь может объяснить, почему выполнение внезапно передается от одного процесса к Windows системе ядра 4?

...