Saya perlu menguji perilaku peralatan dalam hal bahwa Windows keras hang / macet (misalnya layar beku, tidak ada LED berkedip, tidak ada reaksi terhadap masukan, termasuk Ctrl + Alt + Del , dll). Untuk mendapatkan percobaan yang cukup dalam waktu yang cukup singkat, saya perlu memulai hang ini baik secara terprogram atau tidak.
Saya tertarik pada Windows 10 pada khususnya tetapi cara kerja untuk versi lain dihargai.
Setiap pencarian yang saya lakukan pada topik ini tidak mengherankan membawa saya ke diskusi tentang cara menghilangkan situasi ini, tidak memprovokasi mereka. Jadi pertanyaannya mungkin terlihat cukup aneh.
Umpan Balik: Saya sudah mencoba banyak resep yang ditawarkan dalam jawaban dan komentar. Pertama-tama, saya tidak tertarik pada crash yang membawa BSoD (itu sebabnya saya menggambarkan pembekuan, bukan crash).
Saya harus mengakui bahwa Windows 10 64-bit menunjukkan ketahanan yang baik terhadap banyak cara. Ia mengatasi hampir semua metode beban CPU (termasuk fork-bomb , loop, dll.) Dengan cukup baik. Metode yang meningkatkan kesalahan langsung (sebagian besar metode hang NotMyFault) ditangani oleh OS dengan reboot atau shutdown (yang bukan yang saya kejar). Hasil terbaik dicapai dengan metode kebocoran memori NotMyFault - pembekuan nyata tanpa ada kesempatan untuk reboot.
Akhirnya, saya terkesan dengan jumlah dokumentasi oleh Microsoft yang berbicara tentang membuat Windows beku. Sepertinya mereka tahu bagian ini jauh lebih baik daripada sebaliknya (pertarungan membeku) ;-)
Jawaban:
Mungkin ini bisa membantu: Memaksa Sistem Crash dari Keyboard
Atau Anda bisa memulai bom fork: lihat pertanyaan SO ini
Ada juga NotMyFault
sumber
Sepertinya Anda sedang menguji reaksi perangkat eksternal terhadap OS yang menjadi tidak responsif.
Jika perangkat keras Anda dapat dihubungkan ke instalasi Windows tervirtualisasi, maka Anda dapat menjeda dan melanjutkan mesin virtual sebanyak yang Anda suka. Instal OS yang diinginkan di lingkungan VirtualBox (atau virtualisasi desktop lainnya), paparkan antarmuka perangkat keras apa pun yang digunakan (USB, Ethernet, atau apa pun) ke VM.
Anda kemudian dapat menjeda dan melanjutkan mesin virtual sesuka hati.
sumber
Setidaknya di bawah versi Windows yang lebih lama (beberapa tahun yang lalu) yang berikut ini berfungsi:
Saya menulis program C dengan loop tanpa akhir:
... lalu saya berikan program itu "prioritas waktu nyata" di task manager (ada juga API yang bisa melakukan ini).
Pada sistem multi-core saya perlu melakukan ini beberapa kali sehingga satu loop berjalan pada setiap core ...
sumber
_mm_pause()
dari#include <immintrin.h>
dalam loop. Itu adalah instruksi perangkat keras CPU, bukan panggilan sistem "tidur" dalam bentuk apa pun; sejauh menyangkut OS, proses Anda tidak dapat dibedakan dari SuperPI; perbedaannya hanya pada seberapa besar daya yang dikonsumsi CPU saat menjalankan loop.STI
+HLT
): stackoverflow.com/questions/3747847/…CLI; HLT
. Namun, mungkin Anda harus melakukannya dari mode istimewa. Pada prinsipnya masih bisa diselamatkan oleh NMI atau serupa.Kernel hang terkuat (yaitu, tidak ada pelacakan mouse, dll.) Adalah ketika kode masuk ke loop tak terbatas dalam mode kernel dengan interupsi mati.
Dimungkinkan untuk mencapai ini dengan driver perangkat, dan bahkan lebih baik lagi, Anda dapat menulis driver itu sehingga memulai dan menghentikan hang di bawah kendali Anda (dengan asumsi loop tak terbatas sedang menguji kondisi yang Anda kendalikan).
Cara menulis dan menginstal driver ini akan menjadi topik satu atau tiga pertanyaan lain, tetapi itulah pendekatan yang akan saya ambil.
sumber
Silakan periksa pertanyaan berikut tentang StackOverflow yang mirip dengan Anda: Cara membuat windows membeku untuk jangka waktu singkat
Yang pertama adalah bahwa tidak ada cara untuk (andal) melakukannya.
Daripada membekukan atau membuat Windows hang, mungkin Anda bisa mengganggu komunikasi dengan peralatan Anda.
Saya tidak tahu apa peralatan Anda dan bagaimana Anda menghubungkannya. Jika itu USB atau adaptor Ethernet, misalnya, Anda dapat dengan mudah menonaktifkannya di Device Manager atau mencabut? Jika Anda secara paksa crash atau menggantung sistem, Anda dapat merusak sistem Anda dengan berbagai cara, jadi berhati-hatilah dengan apa yang Anda lakukan.
sumber
Apakah mode debug kernel bukan opsi?
Saya telah mengaturnya di Windows 7, dan instruksi yang ditautkan dalam jawaban ini menentukan XP atau yang lebih baru, jadi itu harus bekerja dengan Windows 10.
Saya telah mengaturnya di FireWire / 1394 , karena ini yang paling mudah, menurut saya. Tetapi Anda juga dapat melakukannya melalui jaringan atau USB (dan banyak lagi ).
Pada dasarnya,
Atur komputer target dengan menjalankan perintah ini dalam prompt yang ditinggikan (memilih saluran
n
):Yang sama dengan pergi ke tab boot
msconfig
, dan memilih tombol 'Advanced':Kemudian (setelah me-reboot komputer target), jalankan WinDbg di komputer host menggunakan bitness yang sama dari WinDbg dari komputer target.
Maka itu hanya masalah menjeda eksekusi kernel setiap kali Anda inginkan dari komputer host. Jika Anda menguji peralatan memiliki beberapa operasi asinkron yang sedang berjalan ini harus sama efektifnya dengan cara lain.
sumber
Saya tidak tahu apakah ini memenuhi syarat sebagai pembekuan total karena kursor mouse masih bergerak di layar, tetapi Windows 7 UI menjadi tidak responsif jika Anda memiliki kesalahan perangkat I / O lebih khusus kegagalan hard drive. Salah satu hard drive saya melaporkan kegagalan drive segera yang dilaporkan melalui SMART dan Windows 7 akan memasangnya tetapi hang setiap kali saya mencoba mengakses file tertentu yang tersimpan di dalamnya. UI akan mengunci (kecuali untuk gerakan kursor mouse) hingga 5 menit sampai ia dapat membaca file atau turun dari drive setelah waktu habis. Saya tidak tahu apakah Windows menggunakan jam sistem untuk waktu habis, tetapi mungkin jika Anda entah bagaimana membekukan waktu Anda dapat memperpanjang panjang waktu tunggu? Mungkin ini akan membuat Anda berpisah di sana, tetapi tidak 100% jawaban yang Anda cari.
sumber
Bug ini membekukan Windows cukup cepat karena sumber daya melelahkan. Mudah direproduksi juga.
sumber
Inilah kode sumber aplikasi yang saya gunakan dalam pelajaran debugging saya. Ini menunjukkan bagaimana aplikasi mode pengguna dapat melakukan semacam serangan DoS.
Anda akan melihat bahwa kursor mouse Anda bergerak sangat jarang (sekali setiap sebelas detik di komputer saya). Berpotensi PC Anda masih akan bereaksi pada tombol Power jika Anda menunggu cukup lama.
Ia bekerja menggunakan loop tanpa akhir dan mengatur prioritas tertinggi untuk proses (
0x100
"realtime") dan mengatur prioritas tertinggi untuk utas (15
"kritis waktu"). Ini akan mulai 8 dari mereka, yang cukup untuk komputer i7. Jika Anda membutuhkan lebih banyak, sesuaikan loop. Semakin banyak dari mereka yang berpotensi memperlambat segalanya.sumber
ExitProcess(0)
g++
) jika-O0
tidak cukup, mungkingcc -Q -O0 --help=optimizers | grep enabled
(dan menonaktifkan optimasi yang selamat dengan tangan) dapat menyelesaikanExitProcess(0)
masalah?return 0
pernyataan, karena itu ada setelahwhile(true)
. Kompilator dapat mengetahui bahwa ini adalah pernyataan yang tidak dapat dijangkau.Apakah Anda mencoba utilitas CPUEater yang dibundel dengan Process Lasso? Ps. Saya tidak bekerja untuk bitum.
sumber
Jika Anda benar - benar ingin menggantung PC Anda, benar-benar menyebabkannya hanya membeku , cukup gunakan semua RAM-nya dan paksa ke memori halaman. Itu akan melampaui pembekuan dan benar-benar hanya membebani hal itu sehingga Anda bahkan tidak bisa menggunakan Task Manager, bahkan dengan keyboard. Bahkan ketika proses ini dihentikan, akan memakan waktu lama bagi PC untuk pulih. (Itu yang terbaik!)
Misalnya Anda bisa membuat kelas dengan pointer ke dirinya sendiri, dan dalam loop sementara, buat instance baru dari kelas itu selamanya, menyimpan setiap instance baru dalam pointer instance sebelumnya. Mungkin menambahkan beberapa dobel atau vektor ke kelas juga, untuk mengkonsumsi memori lebih cepat. Maka Anda bisa memiliki timer yang keluar dari while loop dan mendekonstruksi segalanya; tentu saja, Anda harus menunggu sedikit agar pulih.
sumber
Saya sarankan hanya membuat file batch dengan kode berikut:
Ini mungkin cara termudah dan teraman untuk melakukannya. Anda dapat mengganti nama proses dengan aplikasi windows apa pun.
sumber
iexplore.exe
dan mungkinexplorer.exe
akan memiliki dampak yang lebih besar). Itu hanya akan mematikan proses memonopoli memori secara otomatis.sumber