GWP-ASan ו-KFENCE הם כלים סטטיסטיים לזיהוי זיכרון במרחב המשתמש ובליבה, בהתאמה. כשהאפשרות הזו מופעלת, מספר קטן של הקצאות מוגנות באמצעות דפי זיכרון נוספים שמקיפים את הזיכרון שהוקצה. כך מתאפשרת זיהוי חריגות במאגר הנתונים הזמני ושימוש אחרי התקורה בתקורת הביצועים זניחה. גם אם קצב הדגימה קטן עבור ההקצאות השמורות, כשפורסים אותן בקנה מידה נרחב, הן יכולות לזהות ביעילות באגים שקשורים לבטיחות הזיכרון. מאז ההשקה שלהם, הכלים האלה עזרו לזהות מספר רב של באגים בפלטפורמה והם הוכיחו את עצמם ככלי חשוב לשיפור היציבות והאבטחה. אנחנו ממליצים לספקים להפעיל אותם ולעקוב מקרוב אחרי הבאגים שזוהו במכשירי משתמשי הקצה.
המפתחים צריכים לבדוק אם יש קריסות על ידי בדיקה של /data/tombstones
או logcat
, או על ידי מעקב אחרי צינור עיבוד הנתונים של הספק DropboxManager
כדי למצוא באגים של משתמשי קצה.
מידע נוסף זמין במאמרים שלנו בנושא ניפוי באגים בקוד מקורי ל-Android.
ניפוי באגים בקוד של פלטפורמת Android מקוריתGWP-ASan לזיהוי באגים של אבטחת זיכרון במרחב המשתמשים
GWP-ASan הוצג ב-Android 11 להקצאות אשכול במרחב המשתמש. כש-GWP-ASan מזהה באג, הוא מתעד דוח קריסה עם
Cause: [GWP-ASan]:
ומסיים את התהליך. דוחות הבאגים מכילים מידע נוסף על הקצאה ועל ביטול הקצאה, שעוזר לזהות את הגורם לבעיה.
GWP-ASan מופעל באופן אקראי בזמן ההפעלה, ב-1% מהתהליכים או מהאפליקציות במערכת, ובאפליקציות שמגדירות את הערך android:gwpAsanMode
בקובץ AndroidManifest.xml
.
KFENCE לאיתור באגים באבטחת הזיכרון בליבה
ב-Android 12 הושקה KFENCE להקצאות
ערימה של ליבה (kernel). כש-KFENCE מזהה באג, הוא מתעד דוח קריסה שמתחיל ב-BUG: KFENCE,
, משבית את דפי השמירה וממשיך את הביצוע.
כך מופעל מנגנון לזיהוי באגים בליבה, שפוגעת במינימום בחוויית המשתמש.
מידע נוסף על KFENCE זמין במסמכי התיעוד בכתובת https://www.kernel.org