Windows'u askıda kalmaya (donmaya) nasıl teşvik edebilirim?


180

Ben olay ekipman davranışını test gerektiğini, Windows sert kilitleniyor / donuyor (örn dondurulmuş ekran, dahil girişlerine herhangi bir tepki, yanıp sönen hiçbir LED Ctrl + Alt + Del , vs.). Makul bir sürede yeterince deney yapabilmek için bu askıları programlı olarak veya başka şekilde başlatmam gerekiyor.

Özellikle Windows 10 ile ilgileniyorum ancak diğer sürümler için herhangi bir çalışma şekli takdir ediliyor.

Bu konuda yaptığım her araştırma şaşırtıcı bir şekilde beni bu durumları nasıl ortadan kaldıracağım , onları kışkırtmaya değil tartışmalarına getiriyor . Yani soru yeterince garip gelebilir.

Geri bildirim: Cevap ve yorumlarda sunulan tariflerin çoğunu denedim . Her şeyden önce, BSoD'yi getiren kazalarla ilgilenmedim (bu yüzden bir dondurma değil, bir dondurma tanımladım).

İtiraf etmeliyim ki, Windows 10 64-bit, birçok yönden iyi bir direnç gösterdi. Neredeyse tüm CPU yükleme yöntemleriyle ( çatal bomba , döngüler vb.) Başa çıkabiliyor. Anında hatalara neden olan yöntemler (NotMyFault askı yöntemlerinin çoğu), işletim sistemi tarafından yeniden başlatma veya kapatma işlemleriyle yapılır (bu benim yaptığım şey değildir). En iyi sonuçlar , yeniden başlatma şansı olmayan NotMyFault - gerçek dondurmanın hafıza sızıntısı yöntemleriyle elde edildi .

Sonunda, Microsoft'un Windows dondurmayla ilgili yaptığı belgelerden çok etkilendim. Görünüşe göre bu bölümü diğerlerinden daha iyi biliyorlar (savaş donuyor) ;-)


Yorumlar uzun tartışmalar için değildir; bu konuşma sohbete taşındı .
DavidPostill

3
Hesap makinesini kullanarak yapabileceğiniz bir hesaplama vardır, işlem tamamlanıncaya kadar çekirdeği CPU'da dondurur. Dört çekirdekli bir makinede açıkça dört kez yaparsınız. Fakat hayatım boyunca buna neden olan matematik denklemini hatırlayamıyorum.
mickburkejnr

6
@mickburkejnr Bu 100000 faktörüdür. "Bilimsel Görünüm" türüne 100000 yazın ve "n!" tuşuna basın. Bu, eski Windows sürümlerinde iyi çalıştı. Günümüzde bu hesaplamanın uzun zaman alacağı ve iptal edebileceğinize dair bir uyarı alacaksınız.
duenni

25
Sadece kullanmaya başla.
samazi

5
Yükseltmeleri yüklemek her zaman benim için çalıştı.
Daniel R Hicks,

Yanıtlar:


230

Belki bu yardımcı olabilir: Klavyeden Sistem Kazasını Zorlamak

USB klavyelerde, kayıt defterinde klavyeyle başlatılan kilitlenmeyi etkinleştirmeniz gerekir. HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Parameters kayıt defteri anahtarında, CrashOnCtrlScroll adlı bir değer oluşturun ve bu değeri 0x01 REG_DWORD değerine eşitleyin.

Bu ayarların geçerli olması için sistemi yeniden başlatmalısınız.

Bu işlem tamamlandıktan sonra, aşağıdaki kısayol tuşu kullanılarak klavye çökmesi başlatılabilir: En sağdaki CTRL tuşunu basılı tutun ve SCROLL LOCK tuşuna iki kez basın.

Veya bir çatal bomba başlatabilirsiniz: bu soruya bakın

Ayrıca NotMyFault var

Notmyfault, Windows sisteminizde çekirdek bellek sızıntısına neden olmak, kilitlemek ve asmak için kullanabileceğiniz bir araçtır. Aygıt sürücüsünü ve donanım sorunlarını nasıl tanımlayacağınızı ve tanılayacağınızı öğrenmek için kullanışlıdır ve ayrıca, yaramazlık sistemlerinde mavi ekran döküm dosyaları oluşturmak için de kullanabilirsiniz.


9
ForkBomb ve NotMyFault çalıştı. Sızıntı yöntemlerinden biri istediğimi yapıyor gibi görünüyor. Diğerleri donmaya karşı yeniden başlatmaya / kapatmaya getirdikleri için faydalı değildir. Çok teşekkürler.
hiper

6
CtrlScroll size bir BSOD getirir. Bunun hata ayıklama için sistemi dondurması ya da yeniden başlatılması, önyükleme ayarlarına bağlıdır.
yerçekimi

51
Aaannnddd duenni bilgisayarlarımın yanına asla giremez. Hiç.
corsiKa

25

Harici bir cihazın yanıt vermeyen bir işletim sistemine verdiği tepkiyi test ediyor gibisiniz.

Donanımınız sanallaştırılmış bir Windows kurulumuna bağlanabilirse, sanal makineyi istediğiniz kadar duraklatabilir veya devam ettirebilirsiniz. İstediğiniz işletim sistemini bir VirtualBox (veya başka bir masaüstü sanallaştırma) ortamına kurun, hangi donanım arayüzünü (USB, Ethernet veya her neyse) VM'ye gösterin.

Sanal makineyi istediğiniz zaman duraklatabilir ve devam ettirebilirsiniz .


24

En azından eski bir Windows sürümü altında (birkaç yıl önce) aşağıdakiler işe yaradı:

Sonsuz bir döngü ile bir C programı yazdım:

while(1) {}

... sonra görev yöneticisinde bu programa "gerçek zamanlı öncelik" verdim (bunu yapabilen bir API de var).

Çok çekirdekli bir sistemde bunu birden çok kez yapmam gerekirdi, böylece her çekirdekte bir döngü çalışıyor ...


39
Koyun: Bunu yaparken CPU daha az ısıtmak için _mm_pause()gelen #include <immintrin.h>döngü içinde. Bu herhangi bir tür "uyku" sistemi çağrısı değil, bir CPU donanım talimatıdır; İşletim sistemi söz konusu olduğunda, süreciniz SuperPI'den ayırt edilemez; Aradaki fark, döngü çalışırken CPU'nun ne kadar güç harcadığıdır.
Peter Cordes

5
Pencerelerin çekirdek modu bölümlerinin çalışmasını engelleyip engellemediğinden emin değilim.
CodesInChaos

2
@CodesInChaos: Çekirdek iş parçacıklarının çoğu normal öncelikte çalışır. CPU ve çekirdek başına bunlardan biri de oldukça yapılır.
Joshua

X86 montajını ( STI+ HLT) içeren başka bir teknik : stackoverflow.com/questions/3747847/…
meklarian

3
@meklarian: Olmalı CLI; HLT. Muhtemelen, bunu yine de ayrıcalıklı modda yapmanız gerekiyor. Prensip olarak yine de NMI veya benzerleri tarafından kurtarılabilir.
Nate Eldredge

10

En güçlü çekirdek asması (yani, fare izlemesi yok, vb.), Kodun çekirdek modunda kesik olarak sonsuz bir döngüye girmesidir.

Bunu bir aygıt sürücüsü ile elde etmek mümkündür ve daha da iyisi, sürücüyü, kontrolünüzün altında kalmayı başlatacak ve durduracak şekilde yazabilirsiniz (sonsuz döngünün kontrol ettiğiniz durumu test ettiği varsayılarak).

Bu sürücünün nasıl yazılacağı ve kurulacağı, başka bir sorunun ya da üçün konusudur, ancak bu benim aldığım yaklaşım.


9

Lütfen şu soruyu sizinkine benzer olan StackOverflow'ta kontrol edin: Pencerelerin kısa sürede donması

Bunun nedeni, (güvenilir şekilde) yapmanın bir yolu olmadığıdır.

Donma veya Windows'un askıda kalması yerine, donanımınızla iletişimi kesebilirsiniz.

Ekipmanınızın ne olduğu ve onu nasıl bağladığınız hakkında hiçbir fikrim yok. USB veya Ethernet adaptörü ise, örneğin Aygıt Yöneticisi'nden kolayca devre dışı bırakabilir veya fişi prizden çıkarabilirsiniz. Sistemi zorla çökertirseniz veya asarsanız, sisteminize çeşitli şekillerde zarar verebilirsiniz, bu nedenle ne yaptığınıza dikkat edin.


1
Yazılım sonuçlarından memnun kalmazsam, cihazın fiziksel olarak bağlantısını kesmeyi düşüneceğim. Teşekkürler.
hiper

5

Çekirdek hata ayıklama modu bir seçenek değil mi?

Windows 7'de ayarladım ve bu yanıttaki bağlantılı talimatlar XP veya daha yenisini belirtir, bu nedenle Windows 10 ile çalışması gerekir.

FireWire / 1394 üzerine kurdum , bence en kolayı bu. Ancak, bunu ağ üzerinden veya USB üzerinden de yapabilirsiniz (ve daha fazlası ).

Temel olarak,

Bu komutları yükseltilmiş bir bilgi isteminde çalıştırarak (bir kanal seçerek n) hedef bilgisayarı ayarlayın :

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

Bu, önyükleme sekmesine gidip msconfig'Gelişmiş' düğmesini seçmeyle aynıdır :

görüntü tanımını buraya girin

görüntü tanımını buraya girin

Ardından (hedef bilgisayarı yeniden başlattıktan sonra), hedef bilgisayarda WinDbg ile aynı bitliği kullanarak ana bilgisayarda WinDbg'yi çalıştırın.

O zaman ana bilgisayardan istediğinizde çekirdek yürütmeyi duraklatmaktan ibarettir. Ekipmanı çalıştırmakta olduğu bazı eşzamansız bir işlem varsa, bunun diğer yollardan daha etkili olması gerekir.


İlginç bir şekilde. Yine de ikinci bir bilgisayar gerekiyor. Ancak mümkün olduğunda deneyeceğiz.
hiper

2

Fare imleci hala ekranda hareket ettiğinden, bunun toplam donma olarak nitelendirilip nitelendirilmediğini bilmiyorum, ancak aygıt G / Ç hataları varsa, özellikle bir sabit sürücü arızası varsa, Windows 7 UI yanıt vermiyor. Sabit disklerimden biri, SMART ile yakın zamanda ortaya çıkan bir sürücü arızasıydı ve Windows 7 bunu yükleyecekti, ancak kaydedilen belirli dosyalara erişmeye çalıştığımda takılıyordu. UI, dosyayı okuyana veya zaman aşımından sonra sürücüyü sökene kadar 5 dakika kadar kilitler (fare imleci hareketi hariç). Windows zaman aşımı için sistem saatini kullanıyor mu, bilmiyorum ama belki de bir şekilde zamanı dondurursanız zaman aşımı süresini uzatabilirsiniz. Belki bu sizi oraya katlayacaktır, ancak aradığınız cevabın% 100'ü değil.


2

Bu hata , kaynakların tükenmesi nedeniyle Windows'u oldukça hızlı bir şekilde dondurur. Üstelik çoğaltılması kolaydır.

Sonradan anlaşıldı ki, bu aslında bir hata komut satırı (daha spesifik olarak nasıl cmd.exe) toplu dosyalarını ayrıştırır ve hizmet tipi saldırı hızlı reddine neden olabilir; Aşağıdaki satırı bir toplu iş dosyasına (yeni satırlar olmadan) koymak, bu hata nedeniyle (örnek olarak) çok hızlı bir şekilde büyük miktarda bellek tüketecektir:

^ nul<^

Uzun lafın kısası, bir şapka dosyanın sonundayken, dosyanın asıl ucu 'yoksayılır' ve dosya tanıtıcısı 'sıfır' olarak sıfırlanır (esas olarak), böylece parti yeniden ayrıştırılır (adin sonsuz).


2

İşte hata ayıklama derslerimde kullandığım bir uygulamanın kaynak kodu. Bir kullanıcı modu uygulamasının bir tür DoS saldırısı gerçekleştirebildiğini gösterir.

Fare imlecinizin çok nadiren hareket ettiğini fark edeceksiniz (makinemde her on bir saniyede bir). Potansiyel olarak, yeterince beklerseniz, PC'niz Güç düğmesine hala tepki verir.

Sonsuz bir döngü kullanarak ve işleme en yüksek önceliği ( 0x100"gerçek zamanlı") ve iş parçacığı için en yüksek önceliği ( 15"kritik zaman") ayarlayarak çalışır . İ7 bilgisayarlar için yeterli olan 8 tanesini başlatacak. Daha fazlasına ihtiyacınız olursa, döngüyü uyarlayın. Bunlardan daha fazlası potansiyel olarak işleri daha yavaşlatır.

#include "stdafx.h"
#include <windows.h>
#include <string>
#include <sstream>
#include <iostream>

void WasteTime()
{
    int priority = 15;
    ::SetThreadPriority(::GetCurrentThread(), priority);
    while (true)
    {
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    ::SetPriorityClass(::GetCurrentProcess(), 0x100);
    for(int i=0; i<7; i++)
    {
        LPDWORD threadid = 0;
        ::CreateThread(NULL, 64*1024, (LPTHREAD_START_ROUTINE)&WasteTime, NULL, 0, threadid);
        ::Sleep(2000);
    }

    WasteTime();

    return 0;
}

Bu programın C ++ 'da tanımsız davranışı olduğuna dikkat edin, bu nedenle belirli optimizasyon ayarları altında derleyici her şeyin yerine geçebilirExitProcess(0)
Ben Voigt

@BenVoigt Bu durumda (yani ile g++) -O0yeterli değilse, belki gcc -Q -O0 --help=optimizers | grep enabled (ve hayatta kalan optimizasyonu el ile devre dışı bırakmak) ExitProcess(0)sorunu çözebilir mi?
Hastur

@BenVoigt: Ayrıntılı olarak hangi bölümü tanımsız davranış olarak değerlendiriyorsunuz?
Thomas Weller

@BenVoigt IMHO, derleyici yalnızca return 0ifadeyi optimize edebilir , çünkü bundan sonra var olur while(true). Derleyici bunun ulaşılamaz bir ifade olduğunu görebilir.
Thomas Weller

C ++ dili, her iş parçacığının sonunda birkaç gözlemlenebilir davranış türü olarak tanımlanan ilerleme kaydetmesini gerektirir. Sonsuz döngü hiçbir zaman gözlemlenebilir bir ilerleme kaydetmediğinden, derleyici erişilmediğini algılayabilir ve yalnızca onu değil, üstündeki tüm kodları en yakın şubeye geri çekebilir.
Ben Voigt

0

Process Lasso ile birlikte gelen CPUEater yardımcı programını denediniz mi? Ps. Ben bitsum için çalışmıyorum.


"Denedin mi" demek istedin, "Denedin mi" değil. :)
fabspro 12:17

@fabspro "Denedin mi" doğru olduğunu düşünüyorum, çünkü OP zaten başka bir cevabı kabul etti, yani ("sorunu çözme") bahsettiğim olay geçmişte kaldı, ama muhtemelen internetin her zaman olduğunu söyleyebilirdi. Her neyse, bir düzenleme önerirseniz memnuniyetle gözden geçirme sırasına kabul etme görevini devrederim. Kaynak: englishforums.com/İngilizce/HaveYouTriedOrDidYouTry/zclxb/…
beppe9000

Sanırım sorunu çözmüş olsaydı, sorgunuz cevabı üzerine bir yorum olabilirdi - "sorununuzu araştırırken, _______ işe yaradığınız şeylerden biriydi?" belki ... sadece bir şeyler önermek :)
fabspro 13:07

... touché :)
beppe9000

huehuehuehuehue
fabspro 14:17

-2

Eğer varsa gerçekten tamamen bu sadece neden PC'nizi asmak istiyorum dondurmak , sadece kendi RAM tüm kullanabilir ve sayfa belleğine zorlamak. Bu sadece donmanın ötesine geçecek ve gerçekten sadece klavye ile değil Görev Yöneticisi'ni bile kullanamayacağınız bir şeyi aşırı yükleyecektir. İşlem sonlandırılsa bile, PC'nin iyileşmesi uzun zaman alacaktır. (Bu en iyisi!)

Örneğin, kendisine bir işaretçiyle bir sınıf oluşturabilir ve bir süre içinde, her bir örneği bir önceki örneğin işaretçisine depolayarak sonsuza dek o sınıfın yeni bir örneğini oluşturabilirsiniz. Belki hafızayı daha çabuk tüketmek için de sınıfa bazı çiftler veya vektörler ekleyin. O zaman süre döngüsünden çıkan ve her şeyi deşifre eden bir zamanlayıcıya sahip olabilirsiniz; Elbette, iyileşmesi için biraz beklemeniz gerekecek.


-4

Sadece aşağıdaki kodla bir toplu iş dosyası oluşturmanızı öneririm:

@echo off
:x
start cmd.exe
start explorer.exe
start calc.exe
start notepad.exe
start iexplorer.exe
start paint.exe
goto x

Bu muhtemelen bunu yapmanın en kolay ve en güvenli yoludur. İşlem adlarını herhangi bir Windows uygulamasıyla değiştirebilirsiniz.


3
Bu büyük olasılıkla yalnızca RAM'i tüketir ve sabit sürücünün düşmesine neden olur. Bilgisayarınızın özelliklerine bağlı olarak, bilgisayarın, bu listedeki programların 4'ü oldukça hafif ( iexplore.exeve belki de explorer.exedaha büyük bir etkisi olabilir) nedeniyle çalışmaya devam etmesi mümkündür . Sadece otomatik olarak bellekteki hogging işlemlerini keser.
MoonRunestar

-10
  1. C: \ Windows \ Temp \ konumuna gidin
  2. Tümünü Seç için Ctrl-a tuşlarına basın
  3. Enter tuşuna bas

8
Bunun kesin olarak etkili olması için binlerce maddeye ihtiyacınız olacak! % TEMP% klasörüm boş ...
AlainD

6
Bu , soruyu cevaplamak için meşru bir girişim gibi görünmekle birlikte , bunun OP tarafından talep edilen şekilde kilitlenmesi ile sonuçlanmasının tam olarak ne olduğu tam olarak belli değil. Lütfen OP'nin istediğini neden yaptığını açıklamak için sorunuzu düzenleyin .
Twisty Impersonator

9
Bunu deneyen ve orada kötü amaçlı yazılım bulunan araç indirmeleri tarafından vurulduklarının farkına varmamış olan herkes için üzüleceğim.
MoonRunestar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.