Câu hỏi Làm thế nào tôi có thể kích hoạt Windows để treo (đóng băng)?


Tôi cần kiểm tra hành vi thiết bị trong trường hợp Windows cứng treo / đóng băng (ví dụ: màn hình bị đóng băng, không có đèn LED nhấp nháy, không phản ứng với đầu vào, bao gồm Ctrl + Alt + Del, v.v.) Để có đủ các thử nghiệm trong một thời gian ngắn hợp lý, tôi cần phải bắt đầu các thử nghiệm này theo cách lập trình hoặc theo cách khác.

Tôi có hứng thú với Windows 10 đặc biệt nhưng bất kỳ cách làm việc nào cho các phiên bản khác đều được đánh giá cao.

Mọi tìm kiếm tôi đã thực hiện về chủ đề này không ngạc nhiên khi đưa tôi đến các cuộc thảo luận về cách loại trừ những tình huống này, không kích động chúng. Vì vậy, câu hỏi có vẻ kỳ lạ đủ.

Phản hồi: Tôi đã thử nhiều công thức nấu ăn được cung cấp trong câu trả lời và nhận xét. Trước hết, tôi không quan tâm đến tai nạn mang BSoD (đó là lý do tại sao tôi mô tả một đóng băng, không phải là một vụ tai nạn).

Tôi phải thú nhận rằng Windows 10 64 bit cho thấy sức đề kháng tốt với nhiều cách. Nó đối phó với hầu như bất kỳ Tải CPU phương pháp (bao gồm bom nĩa, vòng lặp, v.v.) khá tốt. Các phương pháp làm tăng các lỗi ngay lập tức (hầu hết các phương thức treo của NotMyFault) được xử lý bởi hệ điều hành với khởi động lại hoặc tắt máy (đó không phải là những gì tôi theo đuổi). Kết quả tốt nhất đạt được bằng bộ nhớ bị rò rỉ phương pháp của Không phải lỗi của tôi - đóng băng thực sự mà không có cơ hội khởi động lại.

Cuối cùng, tôi đã bị ấn tượng bởi số lượng tài liệu của Microsoft mà nói về việc làm cho Windows đóng băng. Hình như họ biết phần này tốt hơn nhiều so với đối diện (chiến đấu bị đóng băng) ;-)


180
2017-11-02 08:03


gốc


Nhận xét không dành cho thảo luận mở rộng; cuộc hội thoại này đã đã chuyển sang trò chuyện. - DavidPostill♦
Có một phép tính bạn có thể làm bằng cách sử dụng máy tính, mà đóng băng lõi trên CPU cho đến khi nó hoàn thành nó. Trên một máy tính lõi tứ bạn sẽ làm điều đó bốn lần hiển nhiên. Nhưng tôi không thể cho cuộc sống của tôi nhớ phương trình toán học gây ra nó. - mickburkejnr
@mickburkejnr Đó là giai thừa của 100000. Chuyển sang "Chế độ xem khoa học" loại 100000 và nhấn "n!". Điều này làm việc tốt trên các phiên bản Windows cũ. Ngày nay bạn sẽ nhận được cảnh báo rằng việc tính toán này có thể mất nhiều thời gian và bạn có thể hủy nó. - duenni
Chỉ cần bắt đầu sử dụng nó. - samazi
Cài đặt bản nâng cấp luôn làm việc cho tôi. - Daniel R Hicks


Các câu trả lời:


Có thể điều này có thể giúp: Buộc một sự cố hệ thống từ bàn phím

Với bàn phím USB, bạn phải bật sự cố do bàn phím khởi tạo trong   sổ đăng ký. Trong khóa đăng ký   HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Tham số,   tạo ra một giá trị có tên CrashOnCtrlScroll, và thiết lập nó bằng một   REG_DWORD giá trị 0x01.

Bạn phải khởi động lại hệ thống để các cài đặt này có hiệu lực.

Sau khi quá trình này hoàn tất, có thể khởi động sự cố bằng bàn phím bằng cách sử dụng   chuỗi phím nóng sau: Giữ phím CTRL ngoài cùng bên phải và   nhấn phím SCROLL LOCK hai lần.

Hoặc bạn có thể bắt đầu một quả bom ngã ba: xem câu hỏi SO này

Cũng có Không phải lỗi của tôi

Notmyfault là một công cụ mà bạn có thể sử dụng để treo, treo và gây rò rỉ bộ nhớ hạt nhân trên hệ thống Windows của bạn. Nó rất hữu ích cho việc học cách xác định và chẩn đoán các vấn đề về trình điều khiển thiết bị và phần cứng, và bạn cũng có thể sử dụng nó để tạo các tệp kết xuất màn hình xanh trên các hệ thống bị lỗi.


230
2017-11-02 08:29



Đã thử ForkBomb và NotMyFault. Một trong những phương pháp rò rỉ dường như làm những gì tôi muốn. Những người khác không hữu ích khi họ mang lại để khởi động lại / tắt máy không đóng băng. Cảm ơn rất nhiều. - hypers
CtrlScroll mang đến cho bạn một BSOD. Cho dù đó đóng băng hệ thống để gỡ lỗi hoặc chỉ khởi động lại nó, phụ thuộc vào các thiết lập khởi động. - grawity
Aaannnddd duenni không bao giờ được phép ở gần máy tính của tôi. Không bao giờ. - corsiKa


Có vẻ như bạn đang thử nghiệm phản ứng của một thiết bị bên ngoài với một hệ điều hành không phản hồi.

Nếu phần cứng của bạn có thể được kết nối với một cài đặt Windows được ảo hóa, thì bạn có thể tạm dừng và tiếp tục lại máy ảo nhiều lần tùy thích. Cài đặt hệ điều hành mong muốn trong môi trường VirtualBox (hoặc ảo hóa máy tính để bàn khác), phơi bày bất kỳ giao diện phần cứng nào đang được sử dụng (USB, Ethernet hoặc bất kỳ thứ gì) cho máy ảo.

Bạn có thể tạm dừng và tiếp tục máy ảo theo ý muốn.


25
2017-11-05 03:16





Ít nhất là dưới một phiên bản Windows cũ hơn (một vài năm trước đây) những điều sau đây đã làm việc:

Tôi đã viết một chương trình C với một vòng lặp vô tận:

while(1) {}

... sau đó tôi đã cho chương trình đó "ưu tiên thời gian thực" trong trình quản lý tác vụ (cũng có một API có thể làm điều này).

Trên một hệ thống đa lõi, tôi sẽ cần phải làm điều này nhiều lần để một vòng lặp đang chạy trên mỗi lõi ...


24
2017-11-02 11:55



Để làm nóng CPU của bạn ít hơn trong khi làm điều đó: đặt _mm_pause() từ #include <immintrin.h> trong vòng. Đó là một hướng dẫn phần cứng CPU, không phải là một cuộc gọi hệ thống "ngủ" của bất kỳ loại nào; như xa như hệ điều hành là có liên quan, quá trình của bạn là không thể phân biệt từ SuperPI; sự khác biệt chỉ là lượng CPU tiêu thụ trong khi chạy vòng lặp. - Peter Cordes
Tôi không chắc chắn nếu điều đó dừng các phần chế độ hạt nhân của cửa sổ từ làm việc. - CodesInChaos
@CodesInChaos: Hầu hết các luồng hạt nhân chạy ở mức ưu tiên bình thường. Một trong số này cho mỗi CPU và hạt nhân được thực hiện khá nhiều. - Joshua
Một kỹ thuật khác liên quan đến lắp ráp x86 (STI + HLT): stackoverflow.com/questions/3747847/… - meklarian
@meklarian: Nên là CLI; HLT. Có lẽ bạn phải làm điều đó từ chế độ đặc quyền, mặc dù. Về nguyên tắc nó vẫn có thể được cứu bởi NMI hoặc tương tự. - Nate Eldredge


Các hạt nhân mạnh nhất treo (tức là, không có theo dõi chuột, vv) là khi mã đi vào một vòng lặp vô hạn trong chế độ hạt nhân với ngắt.

Có thể đạt được điều này với trình điều khiển thiết bị, và thậm chí tốt hơn, bạn có thể viết trình điều khiển để nó khởi động và dừng treo dưới sự kiểm soát của bạn (giả sử vòng lặp vô hạn đang kiểm tra điều kiện bạn kiểm soát).

Làm thế nào để viết và cài đặt trình điều khiển này sẽ là chủ đề của một câu hỏi hoặc ba, nhưng đó là cách tiếp cận tôi muốn.


10
2017-11-03 19:26





Vui lòng kiểm tra câu hỏi sau trên StackOverflow tương tự như của bạn: Cách làm cho cửa sổ bị đóng băng trong một khoảng thời gian ngắn

Các tl; dr của nó là không có cách nào để (đáng tin cậy) làm điều đó.

Thay vì đóng băng hoặc khiến Windows bị treo, có thể bạn chỉ có thể ngắt kết nối với thiết bị của mình.

Tôi không biết thiết bị của bạn là gì và cách bạn kết nối thiết bị. Nếu đó là bộ điều hợp USB hoặc Ethernet, ví dụ: bạn có thể dễ dàng tắt nó trong Trình quản lý Thiết bị hoặc rút phích cắm? Nếu bạn gặp sự cố hoặc treo hệ thống, bạn có thể làm hỏng hệ thống của mình theo nhiều cách khác nhau, vì vậy hãy cẩn thận với những gì bạn làm.


9
2017-11-02 08:15



Tôi sẽ xem xét ngắt kết nối vật lý của thiết bị nếu tôi không hài lòng với kết quả phần mềm. Cảm ơn. - hypers


Chế độ gỡ lỗi hạt nhân có phải là một tùy chọn không?

Tôi đã thiết lập nó trong Windows 7 và các hướng dẫn được liên kết trong câu trả lời này chỉ định XP hoặc mới hơn, vì vậy nó sẽ hoạt động với Windows 10.

tôi có thiết lập nó trên FireWire / 1394, vì đó là cách dễ nhất, theo ý kiến ​​của tôi. Nhưng bạn cũng có thể làm điều đó qua mạng hoặc là USB (và hơn).

Về cơ bản,

Thiết lập máy tính đích bằng cách chạy các lệnh này trong dấu nhắc nâng lên (chọn một kênh n):

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

Đó là giống như đi đến tab khởi động của msconfigvà chọn nút 'Nâng cao':

enter image description here

enter image description here

Sau đó (sau khi khởi động lại máy tính đích), hãy chạy WinDbg trên máy chủ bằng cách sử dụng cùng một bit của WinDbg của máy tính mục tiêu.

Sau đó, nó chỉ là vấn đề tạm dừng thực hiện hạt nhân bất cứ khi nào bạn muốn từ máy chủ. Nếu bạn kiểm tra thiết bị có một số hoạt động không đồng bộ mà nó đang chạy này sẽ có hiệu quả như các phương tiện khác.


5
2017-11-08 19:47



Cách thú vị. Cần một máy tính thứ hai mặc dù. Nhưng sẽ cố gắng khi có thể. - hypers


Tôi không biết liệu điều này có đủ điều kiện để đóng băng vì con trỏ chuột vẫn di chuyển trên màn hình, nhưng giao diện người dùng Windows 7 không phản hồi nếu bạn có lỗi I / O của thiết bị cụ thể hơn là lỗi ổ đĩa cứng. Một trong những ổ đĩa cứng của tôi là tự báo cáo lỗi ổ đĩa sắp xảy ra thông qua SMART và Windows 7 sẽ gắn kết nó nhưng treo bất cứ khi nào tôi cố gắng truy cập một số tập tin được lưu trên đó. Giao diện người dùng sẽ khóa (ngoại trừ di chuyển con trỏ chuột) trong tối đa 5 phút cho đến khi nó có thể đọc được tệp hoặc tháo ổ đĩa sau khi hết thời gian chờ. Tôi không biết nếu Windows sử dụng đồng hồ hệ thống cho thời gian chờ, nhưng có lẽ nếu bạn bằng cách nào đó đóng băng thời gian bạn có thể kéo dài thời gian chờ? Có lẽ điều này sẽ giúp bạn có được một phần cách đó, nhưng không phải 100% câu trả lời bạn đang tìm kiếm.


2
2017-11-03 13:52





Lỗi này đóng băng Windows khá nhanh chóng do cạn kiệt tài nguyên. Dễ tái tạo quá.

Khi nó quay ra, đây thực sự là một   lỗi   trong dòng lệnh (cụ thể hơn cmd.exe) phân tích hàng loạt   các tệp và có thể dẫn đến tấn công từ chối dịch vụ nhanh chóng; đặt   dòng sau trong một tập tin thực thi (không có dòng mới) sẽ tiêu thụ   số lượng lớn bộ nhớ rất nhanh chóng do lỗi này (như một   thí dụ):

^ nul<^

Dài câu chuyện ngắn, khi một dấu chấm ở cuối tập tin, thực tế   cuối tập tin bị 'bỏ qua' và tập tin xử lý 'đặt lại' thành 0   (về cơ bản) để lô được phân tích cú pháp một lần nữa (ad infinitum).


2
2017-11-08 13:57





Đây là mã nguồn của một ứng dụng mà tôi sử dụng trong các bài học gỡ rối của tôi. Nó cho thấy cách một ứng dụng chế độ người dùng có thể thực hiện một loại tấn công DoS.

Bạn sẽ nhận thấy rằng con trỏ chuột của bạn di chuyển rất hiếm khi (một lần mỗi mười một giây trên máy tính của tôi). Khả năng máy tính của bạn sẽ vẫn phản ứng trên nút Nguồn nếu bạn đợi đủ lâu.

Nó hoạt động bằng cách sử dụng vòng lặp vô tận và đặt mức độ ưu tiên cao nhất cho quy trình (0x100 "thời gian thực") và đặt mức độ ưu tiên cao nhất cho chuỗi (15 "thời gian quan trọng"). Nó sẽ bắt đầu 8 trong số đó, đủ cho máy tính i7. Nếu bạn cần nhiều hơn, hãy điều chỉnh vòng lặp. Nhiều người trong số họ sẽ có khả năng làm chậm nhiều thứ hơn.

#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;
}

2
2017-11-08 18:22



Cẩn thận rằng chương trình này có hành vi không xác định trong C ++, do đó, theo các cài đặt tối ưu hóa nhất định trình biên dịch có thể thay thế toàn bộ ExitProcess(0) - Ben Voigt
@BenVoigt Trong trường hợp đó (tức là với g++) nếu -O0 không đủ, có thể gcc -Q -O0 --help=optimizers | grep enabled  (và vô hiệu hóa tối ưu hóa bằng tay) có thể giải quyết ExitProcess(0) vấn đề? - Hastur
@BenVoigt: bạn có thể xây dựng, phần nào bạn xem là hành vi không xác định? - Thomas Weller
@BenVoigt IMHO trình biên dịch chỉ có thể tối ưu hóa return 0 tuyên bố, bởi vì điều đó tồn tại sau while(true). Trình biên dịch có thể tìm ra rằng đây là một tuyên bố không thể truy cập được. - Thomas Weller
Ngôn ngữ C ++ yêu cầu tất cả các luồng cuối cùng tạo nên sự tiến bộ, được định nghĩa theo một số loại hành vi có thể quan sát được. Bởi vì vòng lặp vô hạn không bao giờ đạt được tiến bộ quan sát được, trình biên dịch có thể suy ra rằng nó không đạt được, và loại bỏ không chỉ nó, nhưng tất cả mã trên nó trở lại nhánh gần nhất. - Ben Voigt


Bạn đã thử CPUEater tiện ích được đóng gói với Process Lasso? Ps. Tôi không làm việc cho bitum.


0
2017-11-12 18:41



Tôi nghĩ rằng bạn có nghĩa là "Bạn đã thử", không phải "Bạn đã thử". :) - fabspro
@fabspro Tôi nghĩ rằng "Bạn đã thử" là chính xác bởi vì OP đã chấp nhận một câu trả lời khác để sự kiện tôi đề cập đến ("giải quyết vấn đề") là trong quá khứ, nhưng có thể nói internet luôn luôn xảy ra. Dù sao, nếu bạn đề xuất chỉnh sửa, tôi sẽ sẵn sàng ủy nhiệm nhiệm vụ chấp nhận nó vào hàng đợi đánh giá. Nguồn: englishforums.com/English/HaveYouTriedOrDidYouTry/zclxb/… - beppe9000
Tôi đoán nếu anh ta đã giải quyết vấn đề, yêu cầu của bạn có thể là một bình luận về câu trả lời của anh ta sau đó - một cái gì đó như "khi bạn đang nghiên cứu vấn đề của bạn, là một trong những điều bạn đã thử _______ tiện ích?" có lẽ ... chỉ gợi ý những điều :) - fabspro
... touché :) - beppe9000
huehuehuehuehue - fabspro


nếu bạn có thật không muốn treo máy tính của bạn, hoàn toàn làm cho nó chỉ Đông cứng, chỉ cần sử dụng hết bộ nhớ RAM của nó và buộc nó vào bộ nhớ trang. Điều đó sẽ vượt ra ngoài chỉ là đóng băng và thực sự chỉ là quá tải những thứ như vậy mà bạn thậm chí không thể sử dụng Task Manager, thậm chí không bằng bàn phím. Ngay cả khi quá trình chấm dứt, nó sẽ mất một thời gian dài để máy tính phục hồi. (Đó là tốt nhất!)

Ví dụ, bạn có thể tạo một lớp với một con trỏ tới chính nó, và trong một vòng lặp while, tạo một cá thể mới của lớp đó mãi mãi, lưu trữ mỗi cá thể mới trong con trỏ của cá thể trước đó. Có thể thêm một số đôi hoặc véc tơ cho lớp học, để tiêu thụ bộ nhớ nhanh hơn. Sau đó, bạn có thể có một bộ đếm thời gian mà thoát khỏi vòng lặp while và deconstructs tất cả mọi thứ; tất nhiên, bạn sẽ phải chờ một chút để nó phục hồi.


-2
2017-11-09 20:46