Вопрос: Как я могу заставить Windows зависать (замораживать)?


Мне нужно проверить поведение оборудования в том случае, если Windows жесткий зависает / зависает (например, замороженный экран, не мигает светодиод, не реагирует на входные сигналы, в том числе Ctrl + Alt + Del, и т.д.). Чтобы провести достаточно экспериментов за достаточно короткое время, мне нужно инициировать эти завивки либо программно, либо иначе.

Я заинтересован в Windows 10 в частности, но оценивается любой рабочий способ для других версий.

Каждый поиск, который я сделал по этой теме, не вызывает удивления в дискуссиях о том, как Устранить эти ситуации не провоцируют их. Таким образом, вопрос может показаться довольно странным.

Обратная связь: Я пробовал многие из рецепты предлагаемые в ответах и ​​комментариях. Прежде всего, меня не интересовали сбои, которые принесли BSoD (вот почему я описал замораживание, а не крушение).

Должен признаться, что 64-битная Windows 10 продемонстрировала хорошую устойчивость ко многим путям. Он справляется практически с любым CPU-нагрузки метод (включая Вилка-бомба, петли и т. д.). Методы, которые приводят к немедленным ошибкам (большинство методов предотвращения NotMyFault), обрабатываются ОС при перезагрузке или завершении работы (это не то, что я преследовал). Наилучшие результаты были достигнуты утечка памяти методов Не моя вина - реальное замораживание без возможности перезагрузки.

Наконец, я был впечатлен количеством документации Microsoft, которая говорит о том, что Windows замораживает. Похоже, они знают эту часть намного лучше, чем наоборот (борьба замерзает) ;-)


180
2017-11-02 08:03


Источник


Комментарии не предназначены для расширенного обсуждения; этот разговор был переехал в чат, - DavidPostill♦
Существует калькуляция, которую вы можете использовать с помощью калькулятора, который замораживает ядро ​​процессора, пока он не завершит его. На четырехъядерном процессоре вы делали это четыре раза, очевидно. Но я не могу, чтобы жизнь меня помнила математическое уравнение, которое его вызывает. - mickburkejnr
@mickburkejnr Это факториал 100000. Переключитесь на «Научный вид» типа 100000 и нажмите «n!». Это хорошо отразилось на старых версиях Windows. В настоящее время вы получите предупреждение о том, что этот расчет может занять много времени, и вы можете отменить его. - duenni
Просто начните использовать его. - samazi
Установка обновлений всегда работала для меня. - Daniel R Hicks


Ответы:


Может быть, это может помочь: Принуждение системного сбоя с клавиатуры

С помощью USB-клавиатур вы должны включить инициированный клавиатурой сбой в   реестра. В разделе реестра   HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Parameters,   создайте значение с именем CrashOnCtrlScroll и установите его равным   REG_DWORD значение 0x01.

Чтобы эти настройки вступили в силу, необходимо перезагрузить систему.

По завершении этого, сбой клавиатуры может быть инициирован с помощью   следующую последовательность горячих клавиш: удерживайте нажатой клавишу CTRL справа и   дважды нажмите кнопку SCROLL LOCK.

Или вы можете запустить вилку бомбы: см. этот вопрос

Есть также Не моя вина

Notmyfault - это инструмент, который можно использовать для сбоя, зависания и выпадения памяти ядра в вашей системе Windows. Это полезно для изучения того, как идентифицировать и диагностировать проблемы с драйверами устройств и аппаратных средств, а также вы можете использовать его для генерации файлов дампа синего экрана в системах с плохой эксплуатацией.


230
2017-11-02 08:29



Пробовал ForkBomb и NotMyFault. Один из методов утечки, кажется, делает то, что я хочу. Другие не полезны, поскольку они приводят к перезагрузке / выключению, а не к замораживанию. Большое спасибо. - hypers
CtrlScroll предоставляет вам BSOD. Независимо от того, зависает ли эта система отладки или просто перезагружается, зависит от настроек загрузки. - grawity
Aaannnddd duenni никогда не разрешается возле моих компьютеров. Когда-либо. - corsiKa


Похоже, вы проверяете реакцию внешнего устройства на то, что ОС перестает реагировать.

Если ваше оборудование может быть подключено к виртуализированной установке Windows, вы можете приостановить и возобновить виртуальную машину столько раз, сколько захотите. Установите желаемую ОС в среду VirtualBox (или другую виртуализацию на рабочем столе), покажите, какой аппаратный интерфейс используется (USB, Ethernet или что-то еще) для виртуальной машины.

Тогда вы можете пауза и возобновление виртуальная машина по желанию.


25
2017-11-05 03:16





По крайней мере, в старой версии Windows (несколько лет назад) работало:

Я написал программу C с бесконечным циклом:

while(1) {}

... тогда я дал эту программу «приоритет в реальном времени» в диспетчере задач (есть также API, который может это сделать).

В многоядерной системе мне нужно будет делать это несколько раз, чтобы один цикл работал на каждом ядре ...


24
2017-11-02 11:55



Чтобы не нагревать ваш процессор, при этом: put _mm_pause() из #include <immintrin.h> в петле. Это аппаратная инструкция процессора, а не системный вызов «сна» любого рода; что касается ОС, ваш процесс неотличим от SuperPI; разница заключается только в том, сколько энергии потребляет процессор при запуске цикла. - Peter Cordes
Я не уверен, что это остановит работу окон в режиме ядра. - CodesInChaos
@CodesInChaos: Большинство потоков ядра работают с нормальным приоритетом. Один из них на процессор и ядро ​​в значительной степени сделано тоже. - Joshua
Другой метод, включающий сборку x86 (STI + HLT): stackoverflow.com/questions/3747847/... - meklarian
@meklarian: Должно быть CLI; HLT, Предположительно, вы должны сделать это из привилегированного режима. В принципе, он по-прежнему может быть спасен NMI или аналогичным. - Nate Eldredge


Самое сильное зависание ядра (т. Е. Отслеживание мыши и т. Д.) - это когда код переходит в бесконечный цикл в режиме ядра с прерываниями.

Этого можно добиться с помощью драйвера устройства, и даже лучше, вы можете написать драйвер, чтобы он запускался и останавливал зависание под вашим контролем (при условии, что бесконечный цикл проверяет состояние, над которым вы контролируете).

Как написать и установить этот драйвер будет тема другого вопроса или трех, но это тот подход, который я бы взял.


10
2017-11-03 19:26





Пожалуйста, проверьте следующий вопрос в StackOverflow, который похож на ваш: Как сделать замораживание окон на короткий период времени

Это связано с тем, что нет возможности (надежно) сделать это.

Вместо того, чтобы замерзать или заставить Windows зависать, возможно, вы можете просто прервать связь с вашим оборудованием.

Я понятия не имею, что такое ваше оборудование и как вы его подключаете. Если это USB или адаптер Ethernet, например, вы можете легко отключить его в Диспетчере устройств или отключить от сети? Если вы сильно разрушите или повесьте систему, вы можете повредить вашу систему различными способами, поэтому будьте осторожны с тем, что вы делаете.


9
2017-11-02 08:15



Я рассмотрю физическое отсоединение оборудования, если меня не устраивают результаты программного обеспечения. Благодарю. - hypers


Является ли режим отладки ядра не вариантом?

Я установил его в Windows 7, и связанные инструкции в этом ответе указывают XP или новее, поэтому он должен работать с Windows 10.

Я настроить его на FireWire / 1394, так как это самый простой, на мой взгляд. Но вы также можете делать это по сети или USB (а также Больше).

В основном,

Настройте целевой компьютер, выполнив эти команды в расширенном приглашении (выбор канала n):

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

Это то же самое, что и на вкладке загрузки msconfig, и выбрав кнопку «Дополнительно»:

enter image description here

enter image description here

Затем (после перезагрузки целевого компьютера) запустите WinDbg на главном компьютере, используя ту же битву WinDbg целевого компьютера.

Тогда это просто вопрос приостановки выполнения ядра, когда вы хотите с главного компьютера. Если вы тестируете оборудование, имеет асинхронную операцию, которую он запускает, это должно быть таким же эффективным, как и другие средства.


5
2017-11-08 19:47



Интересный путь. Однако нужен второй компьютер. Но попробуй, когда это возможно. - hypers


Я не знаю, относится ли это к полному замораживанию, потому что курсор мыши по-прежнему перемещается по экрану, но пользовательский интерфейс Windows 7 становится невосприимчивым, если у вас есть ошибки ввода-вывода устройства, в частности, сбой жесткого диска. Один из моих жестких дисков - самообследование о неизбежном отказе накопителя через SMART, и Windows 7 смонтировала его, но зависала всякий раз, когда я пытался получить доступ к определенным файлам, сохраненным на нем. Пользовательский интерфейс блокируется (за исключением движения курсора мыши) до 5 минут, пока он не сможет прочитать файл или отключить диск после тайм-аута. Я не знаю, использует ли Windows системные часы для таймаута, но может быть, если вы каким-то образом заморозите время, когда вы можете увеличить длину таймаута? Возможно, это поможет вам разобраться, но не на 100% ответ, который вы ищете.


2
2017-11-03 13:52