Questão Como posso provocar o Windows a travar (congelar)?


Eu preciso testar o comportamento do equipamento no caso de o Windows Difícil trava / congela (por exemplo, tela congelada, nenhum LED piscando, nenhuma reação a entradas, incluindo Ctrl + Alt + Del, etc.). Para ter experiências suficientes em um tempo razoavelmente curto, preciso iniciá-las de maneira programática ou não.

estou interessado em Windows 10 em particular, mas qualquer forma de trabalho para outras versões é apreciada.

Todas as pesquisas que fiz sobre esse assunto não me surpreendem com discussões sobre como eliminar estas situações, não provocá-los. Então a pergunta pode parecer estranha o suficiente.

Comentários: Eu tentei muitos dos receitas oferecido em respostas e comentários. Primeiro de tudo, eu não estava interessado em travamentos que trazem o BSoD (é por isso que descrevi um congelamento, não um travamento).

Devo confessar que o Windows 10 de 64 bits mostrou boa resistência a muitas das maneiras. Ele lida com quase qualquer Carga de CPU método (incluindo garfo-bomba, loops, etc.) muito bem. Os métodos que geram erros imediatos (a maioria dos métodos de interrupção do NotMyFault) são tratados pelo SO com reinicialização ou desligamento (que não é o que eu segui). Os melhores resultados foram alcançados vazamento de memória métodos de Não é minha culpa - congelamento real sem chance de reiniciar.

Finalmente, fiquei impressionado com a quantidade de documentação da Microsoft que fala sobre o congelamento do Windows. Parece que eles conhecem essa parte muito melhor do que o oposto (lutar congelando) ;-)


180


origem


Comentários não são para discussão extensa; esta conversa foi mudou-se para conversar. - DavidPostill♦
Existe um cálculo que você poderia fazer usando a calculadora, que congela o núcleo na CPU até que seja concluída. Em uma máquina quad core você faria isso quatro vezes, obviamente. Mas eu não posso, para a vida de mim, lembrar a equação matemática que causa isso. - mickburkejnr
@mickburkejnr É fatorial de 100000. Mude para "Scientific View" digite 100000 e pressione "n!". Isso funcionou bem em versões antigas do Windows. Hoje em dia você receberá um aviso de que esse cálculo pode demorar muito e você pode cancelá-lo. - duenni
Apenas comece a usá-lo. - samazi
Instalar atualizações sempre funcionou para mim. - Daniel R Hicks


Respostas:


Talvez isso possa ajudar: Forçando uma pane no sistema no teclado

Com teclados USB, você deve ativar a falha iniciada pelo teclado   o registro. Na chave do registro   HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Parameters,   crie um valor chamado CrashOnCtrlScroll e defina-o igual a um   Valor REG_DWORD de 0x01.

Você deve reiniciar o sistema para que essas configurações entrem em vigor.

Depois que isso for concluído, a falha do teclado pode ser iniciada usando   a seguinte sequência de teclas de acesso: Segure a tecla CTRL à extrema direita e   pressione a tecla SCROLL LOCK duas vezes.

Ou você poderia começar uma bomba de garfo: veja esta questão

Há também Não é minha culpa

Notmyfault é uma ferramenta que você pode usar para travar, travar e causar vazamentos de memória do kernel em seu sistema Windows. É útil para aprender a identificar e diagnosticar problemas de driver e hardware do dispositivo, e também é possível usá-lo para gerar arquivos de despejo de tela azul em sistemas com comportamentos inadequados.


230



Tentei ForkBomb e NotMyFault. Um dos métodos de vazamento parece fazer o que eu quero. Outros não são úteis, pois trazem para reiniciar / desligar não congelar. Muito obrigado. - hypers
CtrlScroll traz para você um BSOD. Se isso congela o sistema para depuração ou apenas o reinicia, depende das configurações de inicialização. - grawity
Aaannnddd duenni nunca é permitido perto dos meus computadores. Sempre. - corsiKa


Parece que você está testando a reação de um dispositivo externo a um sistema operacional que não responde.

Se o seu hardware puder ser conectado a uma instalação virtualizada do Windows, você poderá pausar e reiniciar a máquina virtual quantas vezes quiser. Instale o SO desejado em um ambiente VirtualBox (ou outra virtualização de desktop), exponha a interface de hardware que estiver sendo usada (USB, Ethernet ou qualquer outra) à VM.

Você pode então pausar e retomar a máquina virtual à vontade.


25





Pelo menos sob uma versão mais antiga do Windows (alguns anos atrás) o seguinte funcionou:

Eu escrevi um programa em C com um loop infinito:

while(1) {}

... então eu dei esse programa "prioridade em tempo real" no gerenciador de tarefas (há também uma API que pode fazer isso).

Em um sistema multi-core eu precisaria fazer isso várias vezes para que um loop esteja rodando em cada core ...


24



Para aquecer seu CPU a menos enquanto faz isso: coloque _mm_pause() a partir de #include <immintrin.h> no loop. Isso é uma instrução de hardware da CPU, não uma chamada de sistema de "dormir" de qualquer tipo; no que diz respeito ao sistema operacional, seu processo é indistinguível do SuperPI; A diferença está na quantidade de energia que a CPU consome durante a execução do loop. - Peter Cordes
Não tenho certeza se isso impede que as partes do modo kernel funcionem. - CodesInChaos
@CodesInChaos: A maioria dos encadeamentos do kernel são executados na prioridade normal. Um desses por CPU e pelo kernel também é feito. - Joshua
Outra técnica envolvendo o assembly x86 (STI + HLT): stackoverflow.com/questions/3747847/… - meklarian
@meklarian: Deve ser CLI; HLT. Presumivelmente você tem que fazer isso do modo privilegiado, no entanto. Em princípio, ainda pode ser resgatado por NMI ou similar. - Nate Eldredge


O kernel mais forte travado (isto é, sem rastreamento de mouse, etc.) é quando o código entra em um loop infinito no modo kernel com interrupções desativadas.

É possível conseguir isso com um driver de dispositivo e, melhor ainda, é possível gravar o driver de forma que ele inicie e interrompa o travamento sob seu controle (supondo que o loop infinito esteja testando a condição da qual você está controlando).

Como escrever e instalar esse driver seria o tópico de outra pergunta ou três, mas essa é a abordagem que eu tomaria.


10





Por favor, verifique a seguinte pergunta no StackOverflow, que é semelhante à sua: Como fazer o Windows congelar por um curto período de tempo

O problema é que não há como (de forma confiável) fazê-lo.

Em vez de congelar ou deixar o Windows travar, talvez você possa interromper a comunicação com seu equipamento.

Não tenho ideia do que é seu equipamento e como você o conecta. Se é um adaptador USB ou Ethernet, por exemplo, você pode facilmente desativá-lo no Gerenciador de dispositivos ou desconectar? Se você travar com força ou travar o sistema, poderá danificar o sistema de várias maneiras, portanto, tenha cuidado com o que faz.


9



Eu considerarei a desconexão física do equipamento se não estiver satisfeito com os resultados do software. Obrigado. - hypers


O modo de depuração do kernel não é uma opção?

Eu configurei no Windows 7, e as instruções vinculadas nesta resposta especificam o XP ou posterior, por isso ele deve funcionar com o Windows 10.

Eu tenho configurá-lo sobre FireWire / 1394, já que é o mais fácil, na minha opinião. Mas você também pode fazê-lo através da rede ou USB (e Mais).

Basicamente,

Configure o computador de destino executando esses comandos em um prompt elevado (escolhendo um canal n):

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

Qual é o mesmo que ir para a aba de inicialização msconfige selecionando o botão 'Avançado':

enter image description here

enter image description here

Em seguida (após reiniciar o computador de destino), execute o WinDbg no computador host usando o mesmo bitness do WinDbg do computador de destino.

Então é só uma questão de pausar a execução do kernel sempre que você quiser no computador host. Se o equipamento de teste tiver alguma operação assíncrona que esteja sendo executada, isso deve ser tão eficaz quanto outros meios.


5



Maneira interessante. Precisa de um segundo PC embora. Mas vai tentar quando for possível. - hypers


Não sei se isso se qualifica como um congelamento total porque o cursor do mouse ainda se move na tela, mas a interface do Windows 7 não responde se você tiver erros de E / S de dispositivo, mais especificamente uma falha no disco rígido. Um dos meus discos rígidos foi o auto-relato de falha iminente na unidade via SMART e o Windows 7 montaria, mas travaria sempre que eu tentasse acessar certos arquivos salvos nele. A interface do usuário trava (exceto pelo movimento do cursor do mouse) por até 5 minutos até que possa ler o arquivo ou desmontar a unidade após o tempo limite. Eu não sei se o Windows usa o relógio do sistema para o tempo limite, mas talvez se você de alguma forma congelar o tempo que você pode estender o tempo limite? Talvez isso faça com que você se separe, mas não é 100% a resposta que você está procurando.


2