मौत का कोड गोल्फ [बंद]


34

कुछ कोड लिखें जो बीएसओडी या कर्नेल घबराहट का कारण बनते हैं!

नियम:

  • विंडोज पर, आपको लिनक्स (या अन्य * निक्स सिस्टम) पर बगचेक (मौत की ब्लू स्क्रीन) का कारण होना चाहिए, आपको कर्नेल आतंक का कारण बनना चाहिए।
  • सिस्टम को नुकसान नहीं पहुंचाना चाहिए (यानी इसे रीबूट पर काम करना चाहिए)
  • कर्नेल-मोड ड्राइवरों की अनुमति है।
  • अपने OS और संस्करण की जानकारी दें।
  • बताएं कि दुर्घटना कैसे होती है।
  • यह उन उपकरणों का उपयोग करने के नियमों के खिलाफ नहीं है जो विशेष रूप से दुर्घटना का कारण बनने के लिए डिज़ाइन किए गए हैं, लेकिन ऐसा करना बहुत रचनात्मक नहीं है!
  • उच्चतम उत्थान जीतता है।

3
@urogen - पिछली बार जब मैंने जाँच की थी, 1/0नामक एक फाइल में driver.cएक वैध कर्नेल-मोड ड्राइवर नहीं है। बावजूद, विजेता upvotes पर आधारित है, न कि कोड की लंबाई पर।
बहुपत्नी

1
मैं मेटा कोड गोल्फ का हाल ही में अनुसरण नहीं कर रहा हूं - क्या अब "उच्चतम-उत्क्रमित" अनुमति है? (यदि यह मामला है, तो यह वेबसाइट सिर्फ 100x अधिक भयानक है!)
Ry-

1
@ मिनिटेक यह एक वस्तुनिष्ठ मापदंड है, इसलिए मैं यह नहीं देखता कि इसकी अनुमति क्यों नहीं दी जानी चाहिए।
बहुपत्नी

2
@Polynomial मैंने इसे और लगभग सभी उत्तरों को उखाड़ फेंका है, वे महान हैं और वास्तव में चाहते हैं कि इन प्रकार की चुनौतियों की अनुमति दी जाए, लेकिन यह एसई मॉडल के साथ फिट नहीं है।
बिल्ली

4
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि इसमें दुर्भावनापूर्ण कोड की आवश्यकता होती है, जो हमारे नियमों का उल्लंघन करता है। meta.codegolf.stackexchange.com/a/4831/34718
mbomb007

जवाबों:


24

बैश, x86 लिनक्स 2.6.20 कर्नेल

चेतावनी: निम्न आदेश आपके सिस्टम को स्थायी नुकसान पहुंचा सकता है।

cat /dev/urandom > /dev/mem

निम्नलिखित का उत्पादन करेंगे ( यहाँ प्रयास करें )। इसके बाद, स्क्रिप्ट लटक जाती है।

/var/root # cat /dev/urandom > /dev/mem                                        
BUG: unable to handle kernel paging request at virtual address 474e82a5         
 printing eip:                                                                  
c01450c4                                                                        
*pde = 00000000                                                                 
Oops: 0000 [#1]                                                                 
CPU:    0                                                                       
EIP:    0060:[<c01450c4>]    Not tainted VLI                                    
EFLAGS: 00000082   (2.6.20 #12)                                                 
EIP is at free_block+0x54/0xf0                                                  
eax: 00000000   ebx: 474e82a1   ecx: c00745c8   edx: c0005e80                   
esi: c0070ce0   edi: c002c1a0   ebp: 00000000   esp: c0085eec                   
ds: 007b   es: 007b   ss: 0068                                                  
Process events/0 (pid: 3, ti=c0084000 task=c0094030 task.ti=c0084000)           
Stack: c0076410 00000002 c0051db0 c0051db0 c0051da0 00000002 c002c1a0 c01457dd  
       00000000 c0070ce0 c002c1a0 c0091840 c0145800 c0145870 00000000 00000000  
       c02cb2a0 c02cb2a0 00000296 c011dd27 c003fab0 c0094030 c009413c 00047e6c  
Call Trace:                                                                     
 [<c01457dd>] drain_array+0x7d/0xa0                                             
 [<c0145800>] cache_reap+0x0/0x110                                              
 [<c0145870>] cache_reap+0x70/0x110                                             
 [<c011dd27>] run_workqueue+0x67/0x130                                          
 [<c011df17>] worker_thread+0x127/0x140                                                                
 [<c010c7d0>] default_wake_function+0x0/0x10                                    
 [<c010c817>] __wake_up_common+0x37/0x70                                        
 [<c010c7d0>] default_wake_function+0x0/0x10                                    
 [<c011ddf0>] worker_thread+0x0/0x140                                           
 [<c0120d94>] kthread+0x94/0xc0                                                 
 [<c0120d00>] kthread+0x0/0xc0                                                  
 [<c0102ee7>] kernel_thread_helper+0x7/0x10                                     
 =======================                                                        
Code: 04 0f 8d 8f 00 00 00 8b 44 24 08 8b 0c a8 8d 91 00 00 00 40 c1 ea 0c c1 e2

यहां एक ही आदेश के साथ एक और अपवाद पाया गया है:

/dev # cat urandom > mem                                                        
------------[ cut here ]------------                                            
Kernel BUG at c014514c [verbose debug info unavailable]                         
invalid opcode: 0000 [#1]                                                       
CPU:    0                                                                       
EIP:    0060:[<c014514c>]    Not tainted VLI                                    
EFLAGS: 00000046   (2.6.20 #12)                                                 
EIP is at free_block+0xdc/0xf0                                                  
eax: 1608347b   ebx: c009b010   ecx: c003f508   edx: c00057e0                   
esi: c009b000   edi: c002cd40   ebp: 00000000   esp: c0085eec                   
ds: 007b   es: 007b   ss: 0068                                                  
Process events/0 (pid: 3, ti=c0084000 task=c0094030 task.ti=c0084000)           
Stack: c009b010 00000004 c009b010 c009b010 c009b000 00000004 c002cd40 c01457dd  
       00000000 c02ddf20 c002cd40 c0091840 c0145800 c0145870 00000000 00000000  
       c02cb2a0 c02cb2a0 00000296 c011dd27 c005c5a0 c0094030 c009413c 000409ed  

6
मुझे ऐसा लगता हैं। महान शक्ति के साथ महान जिम्मेदारी आती है।
कॉपी करें

15
उल्लंघन से सिस्टम की आवश्यकता को नुकसान नहीं होना चाहिए - यदि आप इसे पर्याप्त बार चलाते हैं, तो यह अंततः डिस्क ड्राइवर को कोड के साथ फिर से लिख देगा जो डिस्क को प्रारूपित करता है।
ugoren

5
@ यूगोरेन यह एक बहुत ही असंभावित परिदृश्य है। इसे सही स्थान पर सटीक 32 बिट पतों और निर्देशों का एक गुच्छा लिखना होगा और दूसरों को अधिलेखित नहीं करना होगा
कॉपी करें

9
"इसे पर्याप्त बार चलाएं, यह अंततः डिस्क ड्रायवर को कोड के साथ फिर से लिखेगा जो डिस्क को प्रारूपित करता है" - निश्चित नहीं है, यूरेनियम का छद्म आयामी है।
स्कीव

3
@ugoren "सिस्टम को नुकसान नहीं पहुंचाना चाहिए" नियम केवल जैसे जवाबों को रोकने के लिए है sudo rm -Rf /। इस पद्धति का उपयोग करके सिस्टम को स्थायी नुकसान पहुंचाने की संभावना पाठ के हैश के आधार पर गाने के बोल के सेट के उत्पादन को मजबूर करने, कहने की संभावना से कम है।
बहुपत्नी

25

सी, 16 चार्ट्स, पी 5 एक्स 86 के लिए

main=-926478352;

F00F बग सबको याद है? मैंने इस छोटे से कार्यक्रम के साथ दिन में एक या दो बार मशीन को लॉक करने में मदद की। (हां, मैं लंबे समय से गोल्फ खेल रहा हूं।)

दी, यह काफी नहीं है जो पूछा गया था, और यह केवल पी 5 पेंटियम चिप्स के पुराने स्टेपिंग पर काम करता है। लेकिन इसके पक्ष में, यह क्रॉस-प्लेटफ़ॉर्म है, लिनक्स और विंडोज दोनों पर काम कर रहा है !


2
यह दुर्भावनापूर्ण है, है ना?

9

QBASIC, 38 वर्ण

DEF SEG=0:FOR I=0 TO 4^8:POKE I,1:NEXT

निश्चित नहीं है कि आप डॉस में बीएसओडी या कर्नेल घबराहट को कैसे परिभाषित करेंगे, लेकिन यह संभवतः बहुत करीब है। जब स्क्रीन चलती है तो बस खाली हो जाती है, और मशीन कुछ भी जवाब नहीं देती है, यहां तक ​​कि Ctrl + Alt + Delete भी नहीं। मशीन को फिर से चालू करने के लिए आपको एक हार्ड रीसेट या पावर चक्र के साथ पुनरारंभ करना होगा। यह VirtualBox के तहत DOS 6.22 पर चल रहा है। निश्चित रूप से यह निश्चित नहीं है कि यह सिस्टम क्रैश करने का कारण क्यों बनता है, लेकिन, मूल रूप से प्रोग्राम मेमोरी (POKE) को मेमोरी में लिख रहा है कि इसका कोई व्यावसायिक लेखन नहीं है।


2
इसका कारण यह है कि आप कबाड़ के साथ सिस्टम प्रोग्राम मेमोरी को ओवरराइट कर रहे हैं।
बहुपत्नी

हाँ, मुझे यह पता था, लेकिन मैं कुछ अधिक विशिष्ट सोच रहा था। मुझे यह भी पता नहीं है कि यह किस मेमोरी में लिख रहा है।
किबी

1
आप COMMAND.COMकम मेमोरी पतों में संग्रहीत डॉस इंटरप्ट वैक्टर और प्रोग्राम कोड को ओवरराइट कर रहे हैं । स्रोत: img.tfd.com/cde/MEMMAP.GIF
बहुपद

8

श (JSLinux में)

लिनक्स संकेतों के खिलाफ init प्रक्रिया को विशेष सुरक्षा देता है । हालाँकि, मैंने देखा कि JSLinux में, /sbin/initएक शेल स्क्रिप्ट है जो अन्य बायनेरिज़ को निष्पादित करता है (सबसे अधिक सहिष्णु /bin/busybox)।

यह "अनंत" जबकि लूप shआवश्यक के रूप में पुनरारंभ होता है:

while /bin/true; do

  setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1'

done

हालाँकि, क्या होगा यदि /bin/trueहमेशा 0 का एग्जिट कोड वापस न किया जाए? /binरीड-ओनली रूट फाइल सिस्टम पर है, फिर भी लिनक्स हमें "बाइंड" माउंट का उपयोग करने की अनुमति देता है:

cp -R /bin /tmp/boom
rm /tmp/boom/true
printf '#!/bin/sh\nexec [ $PPID != 1 ]' > /tmp/boom/true
chmod 755 /tmp/boom/true
mount -o bind /tmp/boom /bin
killall -9 sh

और हम प्राप्त करते हैं:

/var/root # ./boom.sh
Killed
Kernel panic - not syncing: Attempted to kill init!

4

लिनक्स पर बैश, 27 वर्ण

echo c>/proc/sysrq-trigger

या यदि आपके पास sudo अनुमतियाँ हैं:

echo c|sudo tee /proc/sysrq-trigger

1
यह sh: can't create /proc/sysrq-trigger: nonexistent directoryमेरे लिए परिणाम है । (हालांकि यह jsLinux में है, इसलिए मुझे शायद एक वास्तविक बॉक्स पर परीक्षण करना चाहिए)
बहुपद

4

जीटीबी , 13 वर्ण

एक TI-84 कैलकुलेटर से निष्पादित

:"+"→_[_+_→_]

यदि अधिकांश रैम मुफ्त है, तो यह दुर्घटनाग्रस्त हो जाएगा ERR:MEMORY

अन्यथा, कैलकुलेटर की रैम इतनी अधिक है कि यह बंद हो जाता है और इसके अलावा इसे साफ करता है।

"कैलकुलेटर वायरस" का शानदार उदाहरण


मैं देख रहा हूँ, यह सिर्फ कहते हैं +, ++, ++++, आदि में Str0। इसने मुझे दिया ERR:MEMORY, लेकिन Str0तुरंत मेरे 84+ को क्रैश करने की कोशिश की । इसके अलावा, इसने मुझे मेरे सभी कार्यक्रमों को खो दिया।
लीजनमोनमाल 978


2
:(){ :|:& };:

बैश शेल में,

मुझे यकीन नहीं है कि यह यहाँ मायने रखता है, लेकिन यदि आप इसे लंबे समय तक सीपीयू ओवरहेट और सिस्टम क्रैश चलाते हैं, और यह बिना किसी नुकसान के सुरक्षित रूप से रिबूट करता है, तो निश्चित रूप से अगर आप इसे हर समय करते हैं तो कुछ सिस्टम नुकसान होगा।


6
यह वास्तव में काम नहीं करता है। यह सिर्फ सीपीयू को 100% उपयोग पर खर्च करता है, जो किसी भी आधे-सभ्य शीतलन प्रणाली द्वारा उपेक्षित है। मैंने 100% CPU उपयोग में महीनों के लिए Folding @ होम भाग लिया है और कभी मशीन हकलाना भी नहीं था।
बहुपद


2
@ ऑप्टिमस आप इसे यहीं छोड़ सकते हैं - यह एक मान्य उत्तर नहीं है, लेकिन यह कोई नुकसान नहीं कर रहा है। मैं वास्तव में एक विंडोज समाधान के लिए और अधिक कठिन होने की उम्मीद करता हूं, क्योंकि लिनक्स आपको चीजों को तोड़ने की अनुमति देता है यदि आप वास्तव में चाहते हैं।
बहुपद

2
@Polynomial मुझे नहीं लगता कि यह सच है, लिनक्स केवल बेहतर तरीके से आपके द्वारा इसे तोड़ने के तरीकों का दस्तावेजीकरण करता है।
को बंद करना

1
@leftaroundabout I disagree. Windows is designed from the ground up to actively prevent you from damaging the system state from user-mode, and also stops you from modifying critical system files via Windows File Protection, locked system files, etc. Linux, on the other hand, is designed in a way that allows for maximum stability if you don't try to mess with it. But, if you do want to mess with it, you can. For example, I can modify /dev/mem or /dev/kmem as I wish from root.
Polynomial

2

Ruby (run as root), 36 or 40 chars (depending on matches for /p*/s*r)

See http://www.kernel.org/doc/Documentation/sysrq.txt and search for 'c' (including quotes!) to see why it works.

open(Dir['/p*/s*r'][0],?a){|f|f<<?c}

EDIT: Longer version that works if you have other things matching /p*/s*r

open('/proc/sysrq-trigger',?a){|f|f<<?c}

EDIT 2: Intentionally overkill.


2
get-process | stop-process -force

in powershell


1
"It's not against the rules to use tools that are specifically designed to cause a crash, but doing so isn't very creative!"
John Dvorak

1

Linux bash

cat /dev/zero > /dev/mem

Clear the entire memory and cause a infinite kernel panic.

Try it here.


How different is this from this? s/zero/urandom/.
NoOneIsHere

@NoOneIsHere The kernel panic never stop with this version, and here the memory is cleared, not filled with random bytes.
TuxCrafting

0

Batch, 15 bytes

:A
start
goto A

Merely overflows the memory in linear time by starting up cmd.exe hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds and hundreds of times.

There's a deadlier (but probably non-competing) 24-byte program that starts up itself over and over again, thus overflowing the memory in logarithmic time (i.e upgrading your RAM doesn't delay the crash). Suppose the below code is located in C:\a.bat:

:A
start C:\a.bat
goto A

.

Honestly I'm afraid to try those out.


Did anyone notice that the latter program is a fork bomb?
dorukayhan wants Monica back

Yes, I did. :() { : | : & }; :
NoOneIsHere

why not @0 instead of C:\a.bat?
Johannes Kuhn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.