- Firefox क्रैश रिपोर्ट के विश्लेषण से पता चला कि bit-flip से होने वाली हार्डवेयर त्रुटियां कुल क्रैश का एक बड़ा हिस्सा हैं
- पिछले एक हफ्ते में लगभग 4.7 लाख क्रैश रिपोर्ट्स में से 25 हजार ऐसे मामलों के रूप में पहचानी गईं जिनमें bit-flip की संभावना थी
- यह पुष्टि हुई कि सॉफ्टवेयर बग नहीं बल्कि हार्डवेयर खराबी अधिकतम 10~15% क्रैश का कारण है
- क्रैश के बाद चलने वाला memory test tool 3 सेकंड के भीतर अधिकतम 1GiB ही जांचता है, फिर भी यह कई वास्तविक खराबियां ढूंढ लेता है
- यह समस्या PC, स्मार्टफोन, router, printer जैसे सभी डिवाइसेज़ को प्रभावित करती है और consumer hardware reliability की सीमाएं दिखाती है
Firefox क्रैश और bit-flip detection
- Firefox क्रैश रिपोर्ट्स में bit-flip घटना का पता लगाने के लिए एक तरीका तैयार किया गया, और बाद में एक memory test tool वितरित किया गया जो वास्तविक यूज़र डिवाइसेज़ पर क्रैश के बाद अपने-आप चलता है
- यह टूल ब्राउज़र क्रैश के तुरंत बाद यूज़र के डिवाइस पर चलकर memory errors की जांच करता है
- एकत्रित डेटा के विश्लेषण से यह पुष्टि हुई कि bit-flip detection heuristic प्रभावी है, और कई क्रैश खराब memory या अस्थिर hardware पर होते हैं
सांख्यिकीय नतीजे
- पिछले एक हफ्ते में लगभग 4.7 लाख क्रैश रिपोर्ट्स दर्ज हुईं, जिनमें कुल क्रैश का केवल एक हिस्सा शामिल है (opt-in पद्धति)
- इनमें से लगभग 25 हजार मामले (करीब 5%) bit-flip की संभावना वाले क्रैश के रूप में पहचाने गए
- वास्तविक अनुपात एक conservative estimate है, और असल में यह दोगुने से भी अधिक हो सकता है
- सभी Firefox क्रैश में अधिकतम 10% हार्डवेयर खराबी से जुड़े हैं, और memory exhaustion जैसे resource depletion क्रैश हटाने पर यह करीब 15% तक पहुंचता है
- जिन यूज़र्स के hardware में खराबी होती है, वे अधिक बार क्रैश देखते हैं, इसलिए आंकड़े कुछ हद तक विकृत हो सकते हैं
memory test के नतीजे
- क्रैश के बाद चलाए गए memory test tool ने 3 सेकंड के भीतर अधिकतम 1GiB memory की जांच की, फिर भी इसने कई वास्तविक hardware defects पकड़े
- bit-flip माने गए हर दो क्रैश में से एक में वास्तविक खराबी की पुष्टि हुई
- सीमित दायरे का यह टेस्ट भी दिखाता है कि वास्तविक error rate ऊंचा है
हार्डवेयर पर व्यापक असर
- यह समस्या कंप्यूटर और स्मार्टफोन ही नहीं, router, printer और अन्य सभी electronic devices को प्रभावित करती है
- ARM-आधारित MacBook जैसे उन डिवाइसेज़ में भी कई क्रैश रिपोर्ट हुए जिनमें RAM CPU package पर soldered होती है
- ऐसे डिवाइसेज़ में RAM बदलना विशेष उपकरण और कुशल तकनीशियन के बिना संभव नहीं है
कम्युनिटी चर्चा और अतिरिक्त जानकारी
- कुछ यूज़र्स ने खराब RAM के मामले और memtest86 टेस्ट के अनुभव साझा किए, और manufacturers की quality control की कमी की ओर इशारा किया
- ECC RAM की जरूरत पर चर्चा हुई, और यह राय सामने आई कि केवल SECDED ECC भी consumer devices की उम्र को काफी बढ़ा सकता है
- server environments में memory errors पर शोध मौजूद है, लेकिन कहा गया कि consumer device environments की परिस्थितियां अलग हैं, इसलिए सीधी तुलना कठिन है
- डेटा विश्लेषण से डिवाइस की उम्र बढ़ने और memory error rate के बीच मजबूत संबंध की पुष्टि हुई
- bit-flip सिर्फ क्रैश ही नहीं बल्कि filesystem corruption जैसे स्थायी data loss का कारण भी बन सकता है, इसलिए checksum-आधारित filesystem के महत्व पर जोर दिया गया
निष्कर्ष
- यह स्पष्ट रूप से सामने आया कि Firefox क्रैश का एक बड़ा हिस्सा software defects नहीं बल्कि hardware problems से आता है
- consumer devices में memory error detection और ECC अपनाने की जरूरत उभरकर सामने आई
- यह मामला दिखाता है कि hardware reliability सुनिश्चित करना software stability सुधारने से सीधे जुड़ा है
1 टिप्पणियां
Hacker News की टिप्पणियाँ
मैंने यह बात पहले भी HN पर कही थी, लेकिन ArenaNet के दिनों में मेरे सहकर्मी Mike O’Brien (battle.net के निर्माता) ने लगभग 2004 में Guild Wars के लिए एक bit-flip detection system बनाया था
हर फ्रेम पर (लगभग 60FPS) वह random memory allocate करके गणितीय ऑपरेशन चलाता था और परिणामों की तुलना reference value table से करता था, और लगभग 1000 में से 1 मशीन इसमें fail हो जाती थी
ज़्यादातर कारण overclocked CPU, गलत memory timing, अपर्याप्त power, खराब cooling वगैरह थे, और गेम में outdoor terrain rendering बहुत होने से कंप्यूटर अक्सर overheat हो जाते थे
बाद में पता चला कि Dell के low-cost parts की quality issue या RowHammer attack भी कारण हो सकते हैं
मैंने test fail होने पर browser खोलकर “अपने कंप्यूटर के fan साफ करें” वाला पेज दिखाने के लिए code लिखा था
ऐसे मामलों में मुझे अक्सर लगता था कि वजह random bit flips या खराब hardware है
यह थोड़ी महंगी है, लेकिन ऐसे लगभग सभी issues हल कर देती है। कुछ consumer motherboards पहले से ECC support करते हैं
monthly subscription न होने से मेरे माता-पिता खुश थे, और 8-skill build system सच में कमाल का था
अगर तीसरा भाग आए, तो build expression की freedom और बढ़नी चाहिए
overclocking test के दौरान ECC की मदद से सूक्ष्म errors पकड़ सका, और उसके बाद से मैंने ECC के बिना overclocking पर कभी भरोसा नहीं किया
DDR5 में खासकर stability बनाए रखना मुश्किल है और यह heat-sensitive है, इसलिए ECC के बिना overclocking को मैं लगभग असंभव मानता हूँ
ECC memory को 1GB पार करते ही standard बन जाना चाहिए था
आजकल बेकार की RGB LED memory सस्ती मिलती है, लेकिन ECC महंगी है, यह परेशान करने वाली बात है
AMD कम से कम consumer CPU में ECC को “partial support” देता है, लेकिन Intel इसे सिर्फ workstation-grade पर अनुमति देता है
लेकिन यह ECC-रहित DDR4 से ज़्यादा reliable है या नहीं, यह स्पष्ट नहीं है
अगर संभव हो, तो मैं ECC वाला laptop इस्तेमाल करना चाहूँगा
लेकिन server environment जैसी स्थिर power और temperature conditions में यह 99% errors को रोकती है
Go टीम ने telemetry-based crash reporting system अपनाया है
runtime.SetCrashOutputके जरिए goroutine crash stack इकट्ठा करके उन्होंने सैकड़ों bugs पकड़ेलेकिन कुछ reports ऐसे थे जिन्हें memory corruption या CPU malfunction जैसी वजहों के बिना समझाना मुश्किल था
चूँकि ज़्यादातर laptop users ECC-रहित memory इस्तेमाल करते हैं, इसलिए उन्होंने माना कि hardware fault की संभावना ज़्यादा है
मैं JuliaLang ब्लॉग के bit flip case को भी साझा करना चाहूँगा
“Firefox crashes का 10% hardware fault की वजह से है” यह दावा कुछ ज़्यादा ही साहसी लगता है
Chromium-based browsers में तो crash इतनी बार नहीं होते
Chrome ज़्यादा stable इसलिए हो सकता है क्योंकि बाकी 90% software bugs को handle करने की उसकी क्षमता बेहतर है
उल्टा इसका मतलब यह भी हो सकता है कि Firefox के ज़्यादातर crashes software problems हैं
मैंने एक पोस्ट देखी जिसमें लिखा था, “हमें यक़ीन है कि वजह bit flip है,” लेकिन यह कैसे detect किया गया, इसकी व्याख्या कमज़ोर थी
Mozilla source code का memory_test.rs भी शायद यही काम करता है
मैंने नया PC खरीदा और RAM को 5800MHz तक overclock किया, तो Fedora अजीब तरह से freeze होने लगा और apps चल ही नहीं रहे थे
memtest चलाते ही 2 मिनट में लाल errors की बाढ़ आ गई, और speed को 5200 पर लाने के बाद सब stable हो गया
HN के first page पर यह पोस्ट अभी देखना कमाल की timing है
यह देखकर हैरानी होती है कि Firefox का crash rate मेरी अपेक्षा से ज़्यादा है
मुझे कई सालों से shutdown के समय crash की समस्या लगातार होती रही है, और मैं हर बार report submit करता हूँ
सभी extensions WebExtension हैं, फिर भी कारण हर बार अलग-अलग दिखता है
Firefox multiple windows और tabs को संभालने में अच्छा है, लेकिन stability में अभी सुधार की ज़रूरत है
shutdown process में बहुत memory free की जाती है, इसलिए bit flip वहाँ ज़्यादा आसानी से सामने आ सकता है
कारण जानने के लिए memory test चलाना अच्छा रहेगा
about:crashesकी report link साझा करने का अनुरोध हैयह देखकर अच्छा लगा कि कोई वास्तव में इस तरह का data इकट्ठा कर रहा है
मुझे लगता है faulty memory issue computing की सबसे कम आंकी गई समस्याओं में से एक है
इस पर एक छोटी technical whitepaper-style summary होनी चाहिए