ל-Snapdragon Samsung Galaxy S9 יש באג יציבות GPU שניתן לנצל כדי להפעיל אתחולים מרוחקים

click fraud protection

Samsung Galaxy S9 ו-Galaxy S9+ הושקו במספר שווקים כולל ארה"ב, הונג קונג וחלקים מאמריקה הלטינית עם מערכת Qualcomm Snapdragon 845 על-שבב. חברת GraphicsFuzz הבריטית גילתה באג יציבות של GPU שניתן לנצל כדי להפעיל אתחול/קריסת טלפון מרחוק.

החדש סמסונג גלקסי S9 כולל את מערכת-על-שבב האחרונה של Qualcomm Snapdragon 845 עבור מספר שווקים, כולל הונג קונג, ארצות הברית, קנדה וחלקים מאמריקה הלטינית. סמסונג בחרה לעתים קרובות בספינת הדגל העדכנית ביותר של Qualcomm Snapdragon SoC על פני ה-Exynos SoC הפנימי שלה בשווקים מסוימים. זה בדרך כלל המקרה בארצות הברית, למעט ה- Samsung Galaxy S6. לצרכן הממוצע, אין הבדל קטן בין גרסאות ה-Exynos 9810 ו-Snapdragon 845. עם זאת, מתחת למכסה המנוע, ההבדל בערכות השבבים יכול להוביל לחוויות שונות בתכלית.

אננדטקהסקירה של Snapdragon Galaxy S9 וה-Exynos Galaxy S9 חשפה הבדלים עזים בביצועים וחיי סוללה בין שני הדגמים, כאשר דגם ה-Snapdragon עולה בקלות על דגם ה-Exynos. עם שתי ערכות השבבים השונות בתכלית אלה, נראה שההבדל בביצועים אינו הדאגה היחידה הפעם, על פי חברה מבוססת בריטניה בשם GraphicsFuzz

. GraphicsFuzz היא חברת סטארט-אפ המתמחה בבדיקת אמינות GPU במכשירים. הם מפתחים בדיקות כדי לחפש באגים במנהלי התקנים גרפיים ומציעים עזרה באבחון גורמי השורש לכל בעיה שהם מגלים. לדוגמה, הצוות גילה בעיית אבטחה משפיע על מנהל ההתקן של ARM עבור Samsung Galaxy S6, עבורו הוענק להם פרס באג על ידי Google. במהלך הבדיקה שלהם של Snapdragon Samsung Galaxy S9, GraphicsFuzz מצאו שגיאה בדרייבר הגרפי של Adreno 630 המאפשרת להם להפעיל אתחול מחדש של הטלפון כולו דרך דף אינטרנט חוקי של WebGL בעת גלישה עם דפדפן האינטרנט של סמסונג.

בפרט, ישנה שגיאה בעיבוד של Adreno 630 של הצללה מורכבת אך תקפה שניתן לנצל כדי לגרום למכשיר לקפוא ואז בסופו של דבר לאתחל מחדש. הצללה היא פשוט תוכנית המאפשרת ל-GPU לרנדר תמונה. GraphicsFuzz לא עיצבו את דף ה-WebGL מתוך כוונה זדונית להפעיל את הבאג הזה, ובמקום זאת אמרו שהוא התגלה במקרה במהלך הבדיקה הסטנדרטית שלהם של יציבות GPU של מכשירים. ברגע שהם גילו שהתרסקות מרחוק זו ניתנת לשחזור, החברה פנתה אליו מפתחי XDA כדי להקל על תהליך החשיפה הן עם קוואלקום והן עם סמסונג.

Reproduction Crash WebGL ב-Snapdragon Samsung Galaxy S9

לפני שהגענו לנציגים מאחת מהחברות, אימתנו GraphicsFuzzהממצאים של המכשיר שלנו. GraphicsFuzz הגדר עבורנו דף אינטרנט מיוחד לבדיקה מולו, ובחרנו את 5 דפדפני האינטרנט הפופולריים ביותר בחנות Google Play כדי לראות מה יקרה. הטבלה שלהלן מציגה את ההשפעות של עיבוד הצללה המורכבת ב-5 דפדפני אינטרנט שונים.

מכשיר נבדק: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

מערכת הפעלה: אנדרואיד 8.0.0 Oreo SM-G965U

דפדפן אינטרנט

תוֹצָאָה

Google Chrome v65.0.3325.109

קופא למשך ~2 שניות בלבד

Samsung Internet v7.0.10.46

קופא ואז בסופו של דבר מפעיל אתחול מלא

Opera v45.1.2246.125351

מקפיא את הטלפון

Microsoft Edge v1.0.0.1726

קופא למשך ~3 שניות בלבד

Firefox v59.0.2

דפדפן קורס

גם Google Chrome וגם Microsoft Edge יקפיאו את הטלפון לכמה שניות וייצרו שגיאת WebGL, אבל המכשיר בסופו של דבר יהיה בסדר. GraphicsFuzz דיווחו לנו שהם נמצאים בדיון עם צוות Google Chrome במשך זמן מה ולמדו שכרום מיישם מנגנון שמסיים את תהליך ה-GPU לאחר פרק זמן מוגדר כדי למנוע טלפון מלא לְהִתְרַסֵק. Opera מקפיאה את הטלפון, אבל היא לא מפעילה אתחול מחדש. אפליקציית Firefox עצמה קורסת אבל הטלפון בסדר. לבסוף, גישה לדף דרך האינטרנט של סמסונג גורמת לטלפון להאט עד לסריקה לפני הפעלת אתחול מחדש של הטלפון.

להלן הדגמת וידאו של ההתרסקות:

הסבר מפורט על השגיאה

GraphicsFuzz ביצעה חקירה מעמיקה יותר, המעידה על כך שהבעיה שגורמת לטלפון לאתחל היא במנהל התקן GPU עבור Qualcomm Adreno 630 שהוא חלק מה-Qualcomm Snapdragon 845 מערכת על שבב. GraphicsFuzz אסף יומן על ההתרסקות, אותו הטמענו למטה. כדי לתת סיכום קצר של מה שקורה, כשהטלפון מציג את ההצללה המורכבת, ה-GPU קובע משהו שנקרא "גדר". גדר משמשת לתזמורת הגישה לזיכרון המשותף בין ה-CPU ו-GPU. למעבד גרפי נייד, בניגוד למחשב שולחני, יש גישה לאותו זיכרון RAM כמו למעבד, כך שכאשר משחקים או משהו אחר מעבד, הוא משתמש בגדר כדי לגשת לזיכרון המשותף הזה. במכשיר שיש לו גרפיקה נפרדת, ל-GPU עצמו יש זיכרון משלו. כל הטלפונים הניידים הנוכחיים חולקים זיכרון וידאו וזיכרון גישה אקראית עם אחסון הבזק של ה-RAM. הבעיה כאן היא שהגדר לא מסוגלת להשלים מה שמעורר בהלת גרעין וגורם לטלפון לאתחל.

השלם פאניקת ליבה לפני אתחול מחדש

[12681.035590] [2:crtc_commit: 117: 433] kgsl kgsl-3d0: |a6xx_snapshot_gmu| set FENCE toALLOWmode:0
[12681.035839] [2:crtc_commit: 117: 433] kgsl kgsl-3d0: |kgsl_device_snapshot| snapshot created at pa 0x000000016e500000 size 927400
[12681.035993] [0: kworker/u16:5:27740] kgsl kgsl-3d0: |kgsl_snapshot_save_frozen_<wbr />objs| kgsl_snapshot_save_frozen_objs start
[12681.036085][2:crtc_commit: 117: 433]Kernelpanic-notsyncing: !!!FENCETIMEOUT
[12681.036156][2:crtc_commit: 117: 433]CPU: 2 PID: 433 Comm: crtc_commit:117Tainted: GW 4.9.65-13087505#1
[12681.036248][2:crtc_commit: 117: 433]Hardwarename: SamsungSTARQLTEPROJECTRev14 (DT)
[12681.036319][2:crtc_commit: 117: 433]Calltrace:
[12681.036368] [2:crtc_commit: 117: 433] [] dump_backtrace+0x0/0x248
[12681.036438] [2:crtc_commit: 117: 433] [] show_stack+0x18/0x28
[12681.036509] [2:crtc_commit: 117: 433] [] dump_stack+0x98/0xc0
[12681.036578] [2:crtc_commit: 117: 433] [] panic+0x1e0/0x44c
[12681.036646] [2:crtc_commit:117: 433] [] sde_plane_wait_input_fence+<wbr />0x174/0x28c
[12681.036727] [2:crtc_commit:117: 433] [] sde_crtc_atomic_flush+0x1c4/<wbr />0x5e8
[12681.036807] [2:crtc_commit: 117: 433] [] drm_atomic_helper_commit_<wbr />planes+0x19c/0x1fc
[12681.036891] [2:crtc_commit: 117: 433] [] complete_commit+0x74/0x6a4
[12681.036960] [2:crtc_commit:117: 433] [] _msm_drm_commit_work_cb+0x48/<wbr />0x1c4
[12681.037038] [2:crtc_commit: 117: 433] [] kthread_worker_fn+0x78/0x194
[12681.037108] [2:crtc_commit: 117: 433] [] kthread+0xd8/0xf0
[12681.037172] [2:crtc_commit: 117: 433] [] ret_from_fork+0x10/0x20
[12681.037239][2:crtc_commit: 117: 433]Kernelloadedat: 0x800a0000, offsetfromcompile-timeaddress 20000
[12681.037331][2:crtc_commit: 117: 433]SMP: stoppingsecondaryCPUs

קרא עוד

GraphicsFuzz מאמין שהסיבה שהבעיה הזו מתרחשת רק בדפדפן האינטרנט של סמסונג היא של כלב השמירה של ה-GPU. לפעמים GPU עשוי להיתלות על הצללות ארוכות טווח, ובמקרה זה לדפדפן או למערכת ההפעלה יש בדרך כלל כלב שמירה של GPU שמפעיל מחדש בכוח מנהל התקן גרפי שאינו מגיב. ה GraphicsFuzz ל-test shader יש כמה לולאות שעשויות לקחת זמן רב יותר לעיבוד, אבל זה עדיין צללה חוקי. כמה מכשירים אחרים, כולל ה-Exynos 9810 Samsung Galaxy S9 עם ה-Mali-G72 GPU, אכן מצליחים לעבד הצללה זו. לפיכך, הצוות ב GraphicsFuzz הגיע למסקנה ששגיאה זו מתרחשת עקב מנהל התקן GPU פגום עבור Adreno 630.

Google Pixel 2 XL עם ה-Adreno 540 GPU של Qualcomm Snapdragon 835 המריץ את אותה גרסה של דפדפן האינטרנט של סמסונג מאט לזחילה כמו ובכן — זה אומר ששגיאה זו עלולה להיות בעיה עם מנהל ההתקן של Qualcomm GPU המציג את הצללה וכלב השמירה של דפדפן סמסונג לא מסיים את שֵׁרוּת.

בתקווה, קוואלקום תוכל לאבחן את הבעיה הבסיסית במנהל התקן ה-GPU שלהם שגורמת לאתחול מחדש ולספק מנהל התקן קבוע לסמסונג בקרוב. כמובן, יכול לחלוף זמן מה עד שהעדכון הזה יתפשט למשתמשי הקצה. בינתיים, אנו מצפים שסמסונג תדחוף עדכון לדפדפן האינטרנט של סמסונג כדי להקל הבעיה (לפחות מניעת ניצול זה באמצעות דף אינטרנט), התואמת את ההתנהגות של גוגל כרום. למרות שידוע שבעיה זו משפיעה על Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, היא עשויה להשפיע גם על מכשירים נוספים עם Snapdragon 845.

אם אתה מעוניין לבדוק את מהימנות ה-GPU של המכשיר הנייד או השולחני שלך, הצוות ב GraphicsFuzz הרכיב הדגמה של אפליקציה אינטרנטית המאפשרת לך להפעיל כמה מהצלילים התקפים שלהם במכשיר שלך. אתה יכול לגשת לדף האינטרנט הזה על ידי בעקבות הקישור הזה.

ציר זמן חשיפה

  • 28 במרץ, 2018: GraphicsFuzz הושיט יד מפתחי XDA ליידע אותנו על הנושא. מפתחי XDA שיחזרו את הבעיה ב-Samsung Galaxy S9+ שלנו (SM-G965U).
  • 29 במרץ, 2018: GraphicsFuzz פנה עם פרטים נוספים והגדיר דפי אינטרנט מיוחדים עבור עובדי קוואלקום וסמסונג כדי לשחזר את הבאג
  • 30 במרץ, 2018: מפתחי XDA פנו לסמסונג וגם לקוואלקום עם פרטים מלאים על הדוח. איש הקשר שלנו מקוואלקום פנה אלינו והודה שההודעה שלנו התקבלה.
  • 2 באפריל, 2018: איש הקשר שלנו מ-Samsung פנה אלינו והודה שההודעה שלנו התקבלה.
  • 4 באפריל, 2018: איש הקשר שלנו עם סמסונג המליץ ​​לנו להגיש דוח אצל סמסונג דיווח אבטחה עמוד. מפתחי XDA הגיש דוח, ומהנדס סמסונג הוקצה לדוח.