क्रैश (कंप्यूटिंग)

कम्प्यूटिंग में, एक क्रैश या सिस्टम क्रैश तब होता है जब कोई कंप्यूटर प्रोग्राम जैसे सॉफ़्टवेयर एप्लिकेशन या ऑपरेटिंग सिस्टम ठीक से काम करना बंद कर देता है और बाहर निकल जाता है। कुछ ऑपरेटिंग सिस्टम या व्यक्तिगत अनुप्रयोगों पर, एक क्रैश रिपोर्टिंग सेवा क्रैश और उससे संबंधित किसी भी विवरण की रिपोर्ट करेगी (या उपयोगकर्ता को ऐसा करने का विकल्प देगी), सामान्यतः एप्लिकेशन के डेवलपर (डेवलपर्स) को। यदि प्रोग्राम ऑपरेटिंग सिस्टम का एक महत्वपूर्ण हिस्सा है, तो पूरा सिस्टम क्रैश या हैंग हो सकता है, जिसके परिणामस्वरूप प्रायः कर्नेल पैनिक या घातक सिस्टम त्रुटि होती है।

अधिकांश क्रैश सॉफ्टवेयर बग का परिणाम होते हैं। विशिष्ट कारणों में अमान्य मेमोरी एड्रेस तक पहुँचना, प्रोग्राम काउंटर में गलत एड्रेस मान, बफ़र अतिप्रवाह, पहले के बग के कारण प्रभावित प्रोग्राम कोड के एक हिस्से को अधिलेखित करना, अमान्य मशीन निर्देशों को निष्पादित करना (एक अवैध ऑपकोड), या एक अनियंत्रित अपवाद को ट्रिगर करना सम्मिलित है। घटनाओं की इस श्रृंखला को प्रारम्भ करने वाले मूल सॉफ़्टवेयर बग को सामान्यतः क्रैश का कारण माना जाता है, जिसे डिबगिंग की प्रक्रिया के माध्यम से खोजा जाता है। मूल बग को उस कोड से बहुत दूर हटाया जा सकता है जिसने वास्तव में दुर्घटना को ट्रिगर किया था।

प्रारंभिक व्यक्तिगत कंप्यूटरों में, सिस्टम की मुख्य मेमोरी के बाहर हार्डवेयर एड्रेस पर डेटा लिखने का प्रयास करने से हार्डवेयर क्षति हो सकती है। कुछ क्रैश शोषक होते हैं और किसी दुर्भावनापूर्ण प्रोग्राम या हैकर को मनमाना कोड निष्पादित करने देते हैं जो वायरस की प्रतिकृति या डेटा के अधिग्रहण की अनुमति देता है जो सामान्य रूप से दुर्गम होगा।

एप्लिकेशन क्रैश
एक एप्लिकेशन सामान्यतः क्रैश हो जाता है जब यह एक कार्यवाही करता है जिसकी ऑपरेटिंग सिस्टम द्वारा अनुमति नहीं है। ऑपरेटिंग सिस्टम तब एप्लिकेशन में एक अपवाद या सिग्नल चालू कर देता है। यूनिक्स अनुप्रयोगों ने परंपरागत रूप से डम्पिंग कोर द्वारा सिग्नल का जवाब दिया। अधिकांश विंडोज और यूनिक्स ग्राफिकल यूज़र इंटरफ़ेस अनुप्रयोग एक डायलॉग बॉक्स (जैसे कि दाईं ओर दिखाया गया है) को प्रदर्शित करके प्रतिक्रिया देते हैं, यदि कोई डिबगर स्थापित है तो उसे संलग्न करने का विकल्प होता है। कुछ एप्लिकेशन त्रुटि से पुनर्प्राप्त करने का प्रयास करते हैं और बाहर निकलने के बजाय चलना जारी रखते हैं।

गंभीर त्रुटि का पता लगाने के बाद एक एप्लिकेशन में क्रैश के लिए कोड भी हो सकता है

एप्लिकेशन क्रैश होने वाली विशिष्ट त्रुटियों में सम्मिलित हैं:
 * उस स्मृति को पढ़ने या लिखने का प्रयास करना जो उस एप्लिकेशन द्वारा पढ़ने या लिखने के लिए आवंटित नहीं किया गया है (उदाहरण के लिए, विभाजन त्रुटि, x86-विशिष्ट सामान्य सुरक्षा त्रुटि)
 * विशेषाधिकार प्राप्त या अमान्य निर्देशों को निष्पादित करने का प्रयास
 * उन हार्डवेयर उपकरणों पर I/O संचालन करने का प्रयास करना जिनके पास इसे एक्सेस करने की अनुमति नहीं है
 * सिस्टम कॉल में अमान्य तर्क पास करना
 * अन्य सिस्टम संसाधनों तक पहुँचने का प्रयास करना, जिन तक पहुँचने के लिए एप्लिकेशन के पास अनुमति नहीं है
 * खराब तर्कों (सीपीयू वास्तुकला के आधार पर) के साथ मशीन निर्देशों को निष्पादित करने का प्रयास: शून्य से विभाजित करें, असामान्य संख्या या NaN (संख्या नहीं) मानों पर संचालन, असंरेखित पतों तक मेमोरी पहुंच आदि।

डेस्कटॉप पर क्रैश
एक "डेस्कटॉप पर क्रैश" तब होता है जब एक कंप्यूटर प्रोग्राम (सामान्यतः एक वीडियो गेम) अप्रत्याशित रूप से बंद हो जाता है, अचानक उपयोगकर्ता को डेस्कटॉप पर वापस ले जाता है। सामान्यतः, यह शब्द केवल क्रैश के लिए लागू होता है जहां कोई त्रुटि प्रदर्शित नहीं होती है, इसलिए क्रैश के परिणामस्वरूप सभी उपयोगकर्ता डेस्कटॉप को देखते हैं। कई बार कोई स्पष्ट कार्रवाई नहीं होती है जिससे डेस्कटॉप क्रैश हो जाता है। सामान्य कार्य के दौरान, प्रोग्राम कम समय के लिए रुक सकता है, और फिर अपने आप बंद हो सकता है। इसके अलावा सामान्य कार्य के दौरान, प्रोग्राम एक काली स्क्रीन बन सकता है और बार-बार ध्वनि के अंतिम कुछ सेकंड (ऑडियो बफर के आकार के आधार पर) चला सकता है जो डेस्कटॉप पर क्रैश होने से पहले चलाया जा रहा था। दूसरी बार यह किसी क्षेत्र को लोड करने जैसी किसी निश्चित क्रिया द्वारा ट्रिगर किया गया प्रतीत हो सकता है।

क्रैश टू डेस्कटॉप बग उपयोगकर्ताओं के लिए विशेष रूप से समस्याग्रस्त माने जाते हैं। चूंकि वे प्रायः कोई त्रुटि संदेश प्रदर्शित नहीं करते हैं, इसलिए समस्या के स्रोत का पता लगाना बहुत जटिल हो सकता है, विशेष रूप से यदि वे बार-बार होते हैं और दुर्घटना से ठीक पहले होने वाली कार्रवाइयों में कोई प्रतिरूप या सामान्य आधार नहीं दिखता है। खेलों के लिए समस्या के स्रोत का पता लगाने का एक तरीका उन्हें विंडो-मोड में चलाना है। विंडोज विस्टा में एक विशेषता है जो किसी भी प्रोग्राम पर होने पर सीटीडी समस्या के कारण का पता लगाने में मदद कर सकती है। विंडोज एक्सपी में एक समान सुविधा सम्मिलित है। कुछ कंप्यूटर प्रोग्राम, जैसे कि स्टेपमेनिया और बीबीसी के बामज़ूकी, पूर्ण-स्क्रीन में होने पर डेस्कटॉप पर भी क्रैश हो जाते हैं, लेकिन उपयोगकर्ता के डेस्कटॉप पर वापस आने पर त्रुटि को एक अलग विंडो में प्रदर्शित करते हैं।

वेब सर्वर क्रैश
किसी वेबसाइट के पीछे वेब सर्वर चलाने वाला सॉफ़्टवेयर क्रैश हो सकता है, इसे पूरी तरह से दुर्गम बना सकता है या सामान्य सामग्री के बजाय मात्र एक त्रुटि संदेश प्रदान कर सकता है।

उदाहरण के लिए: यदि कोई साइट किसी स्क्रिप्ट (जैसे पीएचपी) के लिए एसक्यूएल डेटाबेस (जैसे माई एसक्यूएल) का उपयोग कर रही है और एसक्यूएल डेटाबेस सर्वर क्रैश हो जाता है, तो पीएचपी एक कनेक्शन त्रुटि प्रदर्शित करेगा।

ऑपरेटिंग सिस्टम क्रैश
एक ऑपरेटिंग सिस्टम क्रैश सामान्यतः तब होता है जब एक हार्डवेयर अपवाद होता है जिसे नियंत्रित नहीं किया जा सकता। ऑपरेटिंग सिस्टम क्रैश तब भी हो सकता है जब ऑपरेटिंग सिस्टम के भीतर विवेक-जांच तर्क यह पता लगाता है कि ऑपरेटिंग सिस्टम ने अपनी आंतरिक आत्म-स्थिरता खो दी है।

आधुनिक मल्टी-टास्किंग ऑपरेटिंग सिस्टम, जैसे कि लिनक्स, और मैकओएस, सामान्यतः किसी एप्लिकेशन प्रोग्राम के क्रैश होने पर अप्रभावित रहते हैं।

कुछ ऑपरेटिंग सिस्टम, जैसे, z/OS, में विश्वसनीयता, उपलब्धता और सेवाक्षमता (आरएएस) के लिए सुविधाएं हैं और ओएस एक महत्वपूर्ण घटक के क्रैश से उबर सकता है, चाहे वह हार्डवेयर विफलता के कारण हो, उदाहरण के लिए, अचूक ईसीसी त्रुटि, या सॉफ़्टवेयर विफलता के कारण, उदाहरण के लिए, असाइन न किए गए पेज का संदर्भ।

दुर्घटनाओं की सुरक्षा और गोपनीयता निहितार्थ
एप्लिकेशन के आधार पर, क्रैश में उपयोगकर्ता की संवेदनशील और निजी जानकारी हो सकती है। इसके अलावा, कई सॉफ़्टवेयर बग जो क्रैश का कारण बनते हैं, मनमाना कोड निष्पादन और अन्य प्रकार के विशेषाधिकार वृद्धि के लिए भी उपयोग किए जा सकते हैं। उदाहरण के लिए, एक ढेर बफर अतिप्रवाह एक सबरूटीन के वापसी पते को एक अमान्य मान के साथ अधिलेखित कर सकता है, जो उपनेमका के वापस आने पर, उदाहरण के लिए, एक विभाजन दोष का कारण होगा। तथापि, यदि कोई शोषण वैध मान के साथ वापसी पते को अधिलेखित कर देता है, तो उस पते का कोड निष्पादित हो जाएगा।

क्रैश पुनरुत्‍पादन
जब क्रैश रिपोर्टर का उपयोग करके फ़ील्ड में क्रैश एकत्र किए जाते हैं, तो डेवलपर्स के लिए अगला कदम उन्हें स्थानीय रूप से पुन: उत्पन्न करने में सक्षम होना है। इसके लिए कई तकनीकें उपलब्ध हैं: स्टार प्रतीकात्मक निष्पादन का उपयोग करता है, म्यू दुर्घटना दुर्घटनाग्रस्त हो चुके एप्लिकेशन के परीक्षण कोड को बदल देता है, और ईवो दुर्घटना विकासवादी खोज करता है।

यह भी देखें

 * अंत के नीले स्क्रीन
 * क्रैश-ओनली सॉफ्टवेयर
 * डेटा हानि
 * गुरु ध्यान
 * मेमोरी करप्शन
 * रिबूट
 * सुरक्षित मोड
 * सिस्टम रेस्क्यूसीडी
 * अपरिभाषित व्यवहार

बाहरी कड़ियाँ

 * Picking Up The Pieces After A Computer Crash