GWP-ASan और KFENCE, उपयोगकर्ता स्पेस और कर्नेल के लिए, मेमोरी की गड़बड़ी का पता लगाने वाले टूल हैं. चालू होने पर, कुछ ऐलोकेशन को अतिरिक्त मेमोरी पेजों से सुरक्षित किया जाता है. ये पेज, ऐलोकेशन की मेमोरी के आस-पास होते हैं. इससे, परफ़ॉर्मेंस पर बहुत कम असर डालते हुए, बफ़र ओवरफ़्लो और इस्तेमाल के बाद मुक्त करने की गड़बड़ियों का पता लगाया जा सकता है. गार्ड किए गए ऐलोकेशन के लिए छोटे सैंपल रेट के साथ भी, बड़े पैमाने पर डिप्लॉय किए जाने पर, वे मेमोरी सेफ़्टी बग का असरदार तरीके से पता लगा सकते हैं. इन टूल के लॉन्च होने के बाद से, इनकी मदद से प्लैटफ़ॉर्म के कई बग की पहचान की गई है. साथ ही, ये टूल प्लैटफ़ॉर्म की परफ़ॉर्मेंस और सुरक्षा को बेहतर बनाने में भी मददगार साबित हुए हैं. हम वेंडर को इन सुविधाओं को चालू करने और उपयोगकर्ता के डिवाइसों पर मिले गड़बड़ियों को बारीकी से मॉनिटर करने का सुझाव देते हैं.
डेवलपर को /data/tombstones
, logcat
की जांच करके या एंड यूज़र बग के लिए, वेंडर की DropboxManager
पाइपलाइन को मॉनिटर करके, क्रैश की मौजूदगी की जांच करनी चाहिए.
ज़्यादा जानकारी के लिए, Android नेटिव कोड को डीबग करने के बारे में हमारे दस्तावेज़ देखें.
नेटिव Android प्लैटफ़ॉर्म कोड को डीबग करनायूज़रस्पेस मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियों का पता लगाने के लिए GWP-ASan
GWP-ASan को Android 11 में, उपयोगकर्ता स्पेस के लिए ढेर के ऐलोकेशन के मकसद से पेश किया गया था. जब GWP-ASan को किसी गड़बड़ी का पता चलता है, तो वह Cause: [GWP-ASan]:
के साथ क्रैश रिपोर्ट रिकॉर्ड करता है और प्रोसेस को बंद कर देता है. गड़बड़ी की रिपोर्ट में, ऐलोकेशन और डिऐलोकेशन से जुड़ी ज़्यादा जानकारी होती है. इससे गड़बड़ी की मूल वजह की पहचान करना आसान हो जाता है.
GWP-ASan, सिस्टम के चालू होने पर, 1% सिस्टम प्रोसेस या ऐप्लिकेशन के लिए, रैंडम तौर पर चालू होता है. साथ ही, यह उन ऐप्लिकेशन के लिए भी चालू होता है जो अपनी AndroidManifest.xml
फ़ाइल में android:gwpAsanMode
सेट करते हैं.
कर्नल मेमोरी की सुरक्षा से जुड़ी गड़बड़ियों का पता लगाने के लिए KFENCE
Android 12 में, kernel heap के लिए KFENCE को पेश किया गया है. जब KFENCE को कोई गड़बड़ी मिलती है, तो वह क्रैश की रिपोर्ट रिकॉर्ड करता है. यह रिपोर्ट BUG: KFENCE,
से शुरू होती है. इसके बाद, यह गार्ड पेजों को बंद कर देता है और प्रोसेस को जारी रखता है.
इससे, कर्नेल में मौजूद गड़बड़ी का पता लगाने वाला एक तरीका चालू होता है. इससे उपयोगकर्ता के अनुभव पर कम से कम असर पड़ता है.
KFENCE के बारे में ज़्यादा जानने के लिए, https://www.kernel.org पर उपलब्ध दस्तावेज़ देखें