2012-08-09 16 views
7

मैंने हाल ही में विंडोज के अपवाद हैंडलिंग के बारे में निम्नलिखित पढ़ा है।"डबल स्टैक गलती" क्या है?

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

डबल स्टैक गलती क्या है? नियमित स्टैक गलती से यह अलग कैसे होता है?

उत्तर

7

यह वाक्यांश शायद इस Codeproject article से आया था। वह साइट तकनीकी समीक्षा के लिए अच्छी तरह से ज्ञात नहीं है। "डबल गलती" का वास्तविक अर्थ ऑपरेटिंग सिस्टम कर्नेल से संबंधित है, आपको एक डबल गलती मिलती है जब कर्नेल की गलती हैंडलर उपयोगकर्ता-मोड गलती का जवाब देती है तो वह गलती से पीड़ित होती है। जो घातक है और एक कर्नेल आतंक का आह्वान करता है। विंडोज़ पर ब्लू स्क्रीन। प्रोसेसर में मौजूद कुछ भी, एक x86 कोर "ट्रिपल गलती" से पीड़ित होने पर कोड निष्पादित करना बंद कर देता है।

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

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^