К сожалению, я знаю, как это сделать, поскольку служба .NET на нашем сервере вызывала синий экран. (Примечание: Windows Server 2008 R2, а не XP/Vista).
Я с трудом мог поверить, что виновата программа .NET, но это было так. Кроме того, я только что воспроизвел BSOD на виртуальной машине.
Код нарушения вызывает ошибку 0x00000f4:
string name = string.Empty; // This is the cause of the problem, should check for IsNullOrWhiteSpace
foreach (Process process in Process.GetProcesses().Where(p => p.ProcessName.StartsWith(name, StringComparison.OrdinalIgnoreCase)))
{
Check.Logging.Write("FindAndKillProcess THIS SHOULD BLUE SCREEN " + process.ProcessName);
process.Kill();
r = true;
}
Если кому-то интересно, почему я хочу воспроизвести синий экран, в этом нет ничего злонамеренного. Я изменил наш класс ведения журнала, чтобы он принимал аргумент, указывающий ему записывать прямо на диск, поскольку действия, предшествовавшие BSOD, не отображались в журнале, несмотря на вызов .Flush(). Я воспроизвел сбой сервера, чтобы проверить изменение журнала. VM должным образом разбился, но регистрация работала.
РЕДАКТИРОВАТЬ: Уничтожение csrss.exe, по-видимому, вызывает синий экран. Согласно комментариям, это, вероятно, происходит в коде ядра.
person
Stephen Kennedy
schedule
20.03.2012