Je dois tester le comportement de l' équipement dans le cas où de Windows dur se bloque / bloque (par exemple , écran figé, aucune LED clignotantes, aucune réaction aux entrées, y compris Ctrl + Alt + Suppr , etc.). Afin d'avoir assez d'expériences dans un temps raisonnablement court, je dois initier ces suspensions soit par programme, soit autrement.
Je suis intéressé par Windows 10 en particulier, mais tout moyen de travail pour les autres versions est apprécié.
Chacune des recherches que j'ai effectuées sur ce sujet m'amène sans surprise à des discussions sur la manière d' éliminer ces situations et non de les provoquer. Donc, la question peut sembler assez étrange.
Commentaires: j'ai essayé plusieurs des recettes proposées dans les réponses et les commentaires. Tout d’abord, les collisions impliquant BSoD ne m’intéressaient pas (c’est pourquoi j’ai décrit un gel, pas un crash).
Je dois avouer que Windows 10 64 bits a bien résisté à de nombreux problèmes. Il se débrouille très bien avec presque toutes les méthodes de chargement du processeur (y compris fork-bomb , boucles, etc.). Les méthodes qui génèrent des erreurs immédiates (la plupart des méthodes de blocage de NotMyFault) sont gérées par le système d'exploitation avec redémarrage ou arrêt (ce qui n'est pas ce que j'ai poursuivi). Les meilleurs résultats ont été obtenus avec les méthodes de fuite de mémoire de NotMyFault - un véritable blocage sans possibilité de redémarrage.
Enfin, j'ai été impressionné par la quantité de documentation fournie par Microsoft sur le blocage de Windows. On dirait qu'ils connaissent cette partie beaucoup mieux que l'inverse (la lutte se fige) ;-)
Réponses:
Peut-être que cela peut aider: forcer un crash système à partir du clavier
Ou vous pouvez lancer une bombe à la fourche: voir cette question SO
Il y a aussi NotMyFault
la source
On dirait que vous testez la réaction d’un périphérique externe face à un système d’exploitation qui ne répond plus.
Si votre matériel peut être connecté à une installation Windows virtualisée, vous pouvez suspendre et reprendre la machine virtuelle autant de fois que vous le souhaitez. Installez le système d'exploitation souhaité dans un environnement VirtualBox (ou autre virtualisation de postes de travail), exposez l'interface matérielle utilisée (USB, Ethernet ou autre) à la machine virtuelle.
Vous pouvez alors mettre en pause et reprendre la machine virtuelle à volonté.
la source
Au moins sous une ancienne version de Windows (il y a quelques années), les éléments suivants fonctionnaient:
J'ai écrit un programme C avec une boucle sans fin:
... puis j'ai donné ce programme "priorité en temps réel" dans le gestionnaire de tâches (il y a aussi une API qui peut le faire).
Sur un système multicœur, je devrais le faire plusieurs fois pour qu'une boucle s'exécute sur chaque cœur ...
la source
_mm_pause()
de#include <immintrin.h>
la boucle. Il s’agit d’une instruction matérielle de la CPU et non d’un appel système "en veille"; en ce qui concerne le système d'exploitation, votre processus est impossible à distinguer de SuperPI; la différence réside simplement dans la quantité d'énergie consommée par le processeur lors de l'exécution de la boucle.STI
+HLT
): stackoverflow.com/questions/3747847/…CLI; HLT
. Vraisemblablement, vous devez le faire depuis le mode privilégié, cependant. En principe, il peut toujours être sauvé par NMI ou similaire.Le blocage le plus puissant du noyau (c'est-à-dire, aucun suivi de la souris, etc.) survient lorsque le code passe dans une boucle infinie en mode noyau avec des interruptions désactivées.
Il est possible d'y parvenir avec un pilote de périphérique et, mieux encore, d'écrire le pilote de sorte qu'il démarre et arrête le blocage sous votre contrôle (en supposant que la boucle infinie teste la condition dont vous êtes le contrôle).
Comment écrire et installer ce pilote serait le sujet d’une autre question ou trois, mais c’est l’approche que j’adopterais.
la source
Vérifiez la question suivante sur StackOverflow, qui est similaire à la vôtre: Comment faire geler Windows pendant une courte période
Le problème, c’est qu’il n’ya aucun moyen de le faire (de manière fiable).
Plutôt que de geler Windows ou de le bloquer, vous pouvez peut-être simplement interrompre la communication avec votre équipement.
Je ne sais pas du tout quel est votre équipement et comment vous le connectez. Si c'est un adaptateur USB ou Ethernet, par exemple, vous pouvez facilement le désactiver dans le Gestionnaire de périphériques ou le débrancher? Si vous bloquez ou suspendez le système avec force, vous pourriez l'endommager de différentes manières. Soyez donc prudent avec ce que vous faites.
la source
Le mode de débogage du noyau n'est-il pas une option?
Je l'ai configuré dans Windows 7 et les instructions liées dans cette réponse spécifient XP ou une version ultérieure, de sorte que cela devrait fonctionner avec Windows 10.
Je l'ai configuré sur FireWire / 1394 , car c'est à mon avis le plus simple. Mais vous pouvez également le faire via le réseau ou la clé USB (et plus encore ).
Fondamentalement,
Configurez l'ordinateur cible en exécutant ces commandes dans une invite élevée (sélection d'un canal
n
):Ce qui revient à aller sur l'onglet de démarrage
msconfig
et à sélectionner le bouton 'Avancé':Ensuite (après le redémarrage de l'ordinateur cible), exécutez WinDbg sur l'ordinateur hôte en utilisant le même nombre de bits que WinDbg de l'ordinateur cible.
Ensuite, il vous suffit de suspendre l'exécution du noyau à tout moment à partir de l'ordinateur hôte. Si votre équipement de test exécute une opération asynchrone, cela devrait être aussi efficace que d'autres moyens.
la source
Je ne sais pas s'il s'agit d'un gel total, car le curseur de la souris se déplace toujours à l'écran, mais l'interface utilisateur de Windows 7 ne répond plus si vous rencontrez des erreurs d'E / S de périphérique, plus précisément une panne de disque dur. L'un de mes disques durs était l'auto-signale une panne imminente de disque via SMART et Windows 7 le montait mais se bloquait à chaque fois que j'essayais d'accéder à certains fichiers qui y étaient enregistrés. L'interface utilisateur se verrouille (à l'exception du mouvement du curseur de la souris) pendant 5 minutes au maximum, jusqu'à ce qu'elle soit capable de lire le fichier ou de démonter le lecteur après l'expiration du délai. Je ne sais pas si Windows utilise l'horloge système pour le délai d'attente, mais peut-être que si vous bloquez le temps, vous pouvez prolonger la durée du délai d'attente? Cela vous mènera peut-être à mi-chemin, mais pas à 100% à la réponse que vous cherchez.
la source
Ce bogue bloque Windows assez rapidement en raison de l’épuisement des ressources. Facile à reproduire aussi.
la source
Voici le code source d'une application que j'utilise dans mes cours de débogage. Il montre comment une application en mode utilisateur peut effectuer une sorte d'attaque DoS.
Vous remarquerez que le curseur de votre souris se déplace très rarement (une fois toutes les onze secondes sur ma machine). Potentiellement, votre PC continuera à réagir au bouton d'alimentation si vous attendez assez longtemps.
Cela fonctionne en utilisant une boucle sans fin et en définissant la priorité la plus élevée pour le processus (
0x100
"temps réel") et en définissant la priorité la plus élevée pour les threads (15
"temps critique"). Il en démarrera 8, ce qui suffit pour les ordinateurs i7. Si vous avez besoin de plus, adaptez la boucle. Plus d’entre eux pourraient potentiellement ralentir davantage les choses.la source
ExitProcess(0)
g++
) si cela-O0
ne suffisait pas, peut-êtregcc -Q -O0 --help=optimizers | grep enabled
(et en désactivant l'optimisation conservée à la main) peut-être résoudre leExitProcess(0)
problème?return 0
instruction, car celle-ci existe aprèswhile(true)
. Le compilateur pourrait découvrir qu'il s'agit d'une instruction inaccessible.Avez-vous essayé l' utilitaire CPUEater fourni avec Process Lasso? Ps. Je ne travaille pas pour Bitsum.
la source
Si vous voulez vraiment bloquer votre PC, le faisant totalement geler , utilisez tout simplement toute sa mémoire vive et forcez-le dans la mémoire de la page. Cela ira au-delà du simple gel et surchargera vraiment le système de telle sorte que vous ne pourrez même pas utiliser le Gestionnaire des tâches, pas même au clavier. Même lorsque le processus est terminé, la récupération du PC prendra beaucoup de temps. (C'est le meilleur!)
Vous pouvez par exemple créer une classe avec un pointeur sur lui-même et, dans une boucle while, créer une nouvelle instance de cette classe pour toujours, en stockant chaque nouvelle instance dans le pointeur de l'instance précédente. Ajoutez peut-être aussi des doublons ou des vecteurs à la classe, pour utiliser la mémoire plus rapidement. Ensuite, vous pouvez avoir une minuterie qui quitte la boucle while et déconstruit tout; bien sûr, vous devrez attendre un peu pour le récupérer.
la source
Je suggérerais simplement de créer un fichier de commandes avec le code suivant:
C'est probablement le moyen le plus simple et le plus sûr de le faire. Vous pouvez remplacer les noms de processus par n’importe quelle application Windows.
la source
iexplore.exe
etexplorer.exe
auraient peut -être un impact plus important). Il ne vous reste plus qu'à tuer automatiquement les processus monopolisateurs de mémoire.la source