EXC_I386_GPFLT निश्चित रूप से "सामान्य सुरक्षा दोष" का उल्लेख कर रहा है, जो आपको बताने के लिए x86 का तरीका है कि "आपने कुछ ऐसा किया जो आपको करने की अनुमति नहीं है"। इसका आम तौर पर यह मतलब नहीं है कि आप मेमोरी सीमा से बाहर पहुंच जाते हैं, लेकिन यह हो सकता है कि आपका कोड सीमा से बाहर हो जाए और खराब कोड / डेटा का उपयोग इस तरह से किया जाए जो किसी प्रकार के सुरक्षा उल्लंघन का कारण बनता है।
दुर्भाग्य से यह पता लगाना मुश्किल हो सकता है कि समस्या अधिक संदर्भ के बिना वास्तव में क्या है, मेरे AMD64 प्रोग्रामर मैनुअल, 2005 से वॉल्यूम 2 में सूचीबद्ध 27 अलग-अलग कारण हैं - सभी खातों द्वारा, यह संभावना है कि 8 साल बाद कुछ जोड़ा जाएगा अधिक।
यदि यह 64-बिट सिस्टम है, तो एक प्रशंसनीय परिदृश्य यह है कि आपका कोड "गैर-विहित सूचक" का उपयोग कर रहा है - जिसका अर्थ है कि 64-बिट पता इस तरह से बनता है कि पते के ऊपरी 16 बिट्स नहीं होते हैं निचले 48 बिट्स के शीर्ष की सभी प्रतियां (दूसरे शब्दों में, एक पते के शीर्ष 16 बिट्स सभी 0 या सभी 1 होने चाहिए, 16 बिट्स के नीचे बिट के आधार पर)। यह नियम यह गारंटी देने के लिए है कि वास्तुकला "पता सीमा में मान्य बिट्स की संख्या का सुरक्षित रूप से विस्तार कर सकता है"। यह इंगित करेगा कि कोड या तो कुछ पॉइंटर डेटा को अन्य सामान के साथ अधिलेखित कर रहा है, या कुछ पॉइंटर मान को पढ़ते समय सीमा से बाहर जा रहा है।
एक अन्य संभावित कारण एक एसएसई रजिस्टर के साथ अनइंस्टॉल एक्सेस है - दूसरे शब्द में, 16-बाइट एसएसई रजिस्टर को एक पते से पढ़ना जो 16-बाइट गठबंधन नहीं है।
जैसा कि मैंने कहा, कई अन्य संभावित कारण हैं, लेकिन उनमें से अधिकांश में ऐसी चीजें शामिल हैं जो "सामान्य" कोड 32- या 64-बिट ओएस में नहीं करेंगे (जैसे कि अवैध चयनकर्ता सूचकांक के साथ लोडिंग सेगमेंट रजिस्टर करना या लिखना MSR (मॉडल विशिष्ट रजिस्टर))।