- DOOM इंजन में variable overflow के कारण गेम क्रैश होने की पुष्टि हुई
- वास्तविक उपयोग वाले वातावरण में 2.5 साल तक DOOM चलाने का प्रयोग किया गया
- variable का मान लगातार बढ़ता रहा और overflow तक पहुँचने पर अनुमानित समय पर गेम बंद हो गया
- यह प्रयोग PDA और DIY UPS का उपयोग करके लंबे समय तक auto-run वातावरण में किया गया
- इस टेस्ट ने साबित किया कि सैद्धांतिक समस्या वास्तविक दुनिया में भी सचमुच हो सकती है
प्रयोग की पृष्ठभूमि और प्रेरणा
- लगभग ढाई साल पहले, DOOM इंजन की संरचना और उसके काम करने के तरीके पर एक लेख पढ़ते समय यह पाया गया कि demo execution tracking में उपयोग होने वाला variable हर demo शुरू होने पर लगातार बढ़ता है
- इस variable की तुलना पिछले मान से की जाती है, लेकिन मान बार-बार बढ़ते रहने से अंततः overflow का जोखिम मौजूद रहता है
- सामान्य उपयोग के माहौल में इस overflow स्थिति तक पहुँचना मुश्किल है, लेकिन वास्तव में इसमें कितना समय लगेगा, यह जानने के लिए सीधे प्रयोग करने का फैसला किया गया
प्रयोग की विधि और प्रक्रिया
- साधारण गणना के आधार पर अनुमान लगाया गया कि overflow होने तक लगभग 2.5 साल का runtime चाहिए होगा
- वास्तविक पुष्टि के लिए PDA डिवाइस में DOOM इंस्टॉल किया गया और 18650 बैटरी से बने DIY UPS से उसे बिजली दी गई
- उस डिवाइस को router के USB port से जोड़ा गया, ताकि 5V बिजली की आपूर्ति लगातार बनी रहे
- सिस्टम को auto-charging वातावरण में लगातार चलने के लिए सेट किया गया और अधिकांश समय उसे ऐसे ही छोड़ दिया गया
क्रैश और परिणाम
- प्रयोग शुरू होने के लगभग ढाई साल बाद, डिवाइस की स्क्रीन पर popup notification दिखाई दी
- अनुमान के मुताबिक DOOM overflow के कारण hard crash की स्थिति में चला गया
- प्रयोग के परिणाम ने साबित किया कि variable overflow के कारण गेम बंद होना वास्तविक हार्डवेयर और वास्तविक software वातावरण में भी हो सकता है
निष्कर्ष और संकेत
- प्रोग्रामिंग में लंबे समय तक जमा होकर बढ़ने वाले variables के प्रति सावधानी की ज़रूरत पर जोर दिया गया
- यह प्रयोगात्मक रूप से पुष्टि हुई कि सिर्फ सैद्धांतिक मानी जाने वाली overflow समस्या वास्तविकता में सचमुच फट सकती है
- legacy code या लंबे समय तक चलने वाले software में छिपे हुए दोषों के प्रति सतर्क रहने की आवश्यकता दिखाई गई
अभी कोई टिप्पणी नहीं है.