يحتوي Snapdragon Samsung Galaxy S9 على خطأ في استقرار وحدة معالجة الرسومات يمكن استغلاله لتشغيل عمليات إعادة التشغيل عن بُعد

click fraud protection

تم إطلاق Samsung Galaxy S9 وGalaxy S9+ في العديد من الأسواق بما في ذلك الولايات المتحدة وهونج كونج وأجزاء من أمريكا اللاتينية باستخدام نظام Qualcomm Snapdragon 845 على الرقاقة. اكتشفت شركة GraphicsFuzz البريطانية ثغرة في استقرار وحدة معالجة الرسومات (GPU) يمكن استغلالها لتحفيز عمليات إعادة تشغيل/تعطل الهاتف عن بُعد.

الجديد سامسونج جالاكسي اس9 يتضمن أحدث نظام Qualcomm Snapdragon 845 على الرقاقة للعديد من الأسواق، بما في ذلك هونج كونج والولايات المتحدة وكندا وأجزاء من أمريكا اللاتينية. غالبًا ما اختارت شركة Samsung أحدث معالج Qualcomm Snapdragon SoC الرائد على Exynos SoC الداخلي في بعض الأسواق. هذا هو الحال عادة في الولايات المتحدة، باستثناء Samsung Galaxy S6. بالنسبة للمستهلك العادي، لا يوجد فرق كبير بين متغيرات Exynos 9810 وSnapdragon 845. ومع ذلك، تحت الغطاء، يمكن أن يؤدي الاختلاف في الشرائح إلى تجارب مختلفة تمامًا.

أناندتككشفت مراجعة Snapdragon Galaxy S9 و Exynos Galaxy S9 عن اختلافات صارخة في الأداء وعمر البطارية بين النموذجين، حيث يتفوق طراز Snapdragon بسهولة على طراز Exynos. مع هاتين الرقاقتين المختلفتين إلى حد كبير، لا يبدو أن الاختلاف في الأداء هو مصدر القلق الوحيد هذه المرة، وفقًا لشركة مقرها المملكة المتحدة تدعى 

GraphicsFuzz. GraphicsFuzz هي شركة ناشئة متخصصة في اختبار موثوقية وحدة معالجة الرسومات على الأجهزة. يقومون بتطوير اختبارات للبحث عن الأخطاء في برامج تشغيل الرسومات وتقديم المساعدة في تشخيص الأسباب الجذرية لأي مشكلات يكتشفونها. على سبيل المثال، اكتشف الفريق مشكلة أمنية يؤثر على برنامج تشغيل ARM لجهاز Samsung Galaxy S6، حيث حصلوا على مكافأة الأخطاء من Google. أثناء اختبارهم لجهاز Snapdragon Samsung Galaxy S9، GraphicsFuzz عثروا على خطأ في برنامج تشغيل الرسومات Adreno 630 الذي يسمح لهم بذلك يؤدي إلى إعادة تشغيل الهاتف بالكامل عبر صفحة إنترنت WebGL صالحة عند التصفح باستخدام متصفح الإنترنت الخاص بشركة Samsung.

على وجه الخصوص، يوجد خطأ في عرض Adreno 630 لتظليل معقد ولكنه صالح يمكن استغلاله لتجميد الجهاز ثم إعادة تشغيله في النهاية. التظليل هو ببساطة برنامج يسمح لوحدة معالجة الرسومات بعرض صورة. GraphicsFuzz لم تصمم صفحة WebGL بقصد خبيث لإثارة هذا الخطأ، وبدلاً من ذلك يقولون إنه تم اكتشافه بالصدفة أثناء اختبارهم القياسي لاستقرار وحدة معالجة الرسومات للأجهزة. وبمجرد أن اكتشفوا أن هذا التعطل عن بعد يمكن تكراره، تواصلت الشركة معهم مطوري XDA لتسهيل عملية الكشف مع كل من كوالكوم وسامسونج.

تعطل WebGL في هاتف Snapdragon Samsung Galaxy S9

قبل أن نتواصل مع ممثلي أي من الشركتين، قمنا بالتحقق من صحتها GraphicsFuzzالنتائج على أجهزتنا الخاصة. GraphicsFuzz قم بإعداد صفحة ويب خاصة لنختبرها، واخترنا متصفحات الإنترنت الخمسة الأكثر شيوعًا على متجر Google Play لمعرفة ما سيحدث. يوضح الجدول أدناه تأثيرات عرض التظليل المعقد على 5 متصفحات ويب مختلفة.

تم اختبار الجهاز: كوالكوم سنابدراجون 845 سامسونج جالاكسي S9+ (SM-G965U)

نظام التشغيل: أندرويد 8.0.0 أوريو SM-G965U

متصفح الإنترنت

نتيجة

جوجل كروم v65.0.3325.109

يتجمد لمدة ~ 2 ثانية فقط

سامسونج انترنت v7.0.10.46

يتجمد ثم يؤدي في النهاية إلى إعادة التشغيل الكامل

أوبرا v45.1.2246.125351

يجمد الهاتف

مايكروسوفت إيدج v1.0.0.1726

يتجمد لمدة ~ 3 ثواني فقط

فايرفوكس v59.0.2

تعطل المتصفح

سيقوم كل من Google Chrome وMicrosoft Edge بتجميد الهاتف لبضع ثوان وإنشاء خطأ WebGL، ولكن الجهاز سيكون على ما يرام في النهاية. GraphicsFuzz أبلغونا أنهم أجروا مناقشات مع فريق Google Chrome لبعض الوقت وقد تعلموا ذلك أن Chrome ينفذ آلية تنهي عملية GPU بعد فترة زمنية محددة لمنع امتلاء الهاتف يتحطم. يقوم Opera بتجميد الهاتف، لكنه لا يؤدي إلى إعادة التشغيل. يتعطل تطبيق Firefox نفسه ولكن الهاتف يعمل بشكل جيد. وأخيرًا، يؤدي الوصول إلى الصفحة عبر Samsung Internet إلى إبطاء سرعة الهاتف إلى حد الزحف قبل بدء عملية إعادة تشغيل الهاتف بالكامل.

وهنا فيديو توضيحي للحادث:

شرح مفصل للخطأ

GraphicsFuzz أجرى تحقيقًا أكثر تعمقًا يشير إلى أن المشكلة التي تسببت في إعادة تشغيل الهاتف هي في برنامج تشغيل GPU لـ Qualcomm Adreno 630 والذي يعد جزءًا من Qualcomm Snapdragon 845 النظام على الرقاقة. GraphicsFuzz قمنا بتجميع سجل التعطل، والذي قمنا بتضمينه أدناه. لإعطاء ملخص موجز لما يحدث، عندما يعرض الهاتف التظليل المعقد، تقوم وحدة معالجة الرسومات بتعيينه شيء يسمى "السياج". يتم استخدام السياج لتنظيم الوصول إلى الذاكرة المشتركة بين وحدة المعالجة المركزية ووحدة معالجة الرسومات. تتمتع وحدة معالجة الرسومات المحمولة، على عكس سطح المكتب، بإمكانية الوصول إلى نفس ذاكرة الوصول العشوائي مثل وحدة المعالجة المركزية، لذلك عند تشغيل لعبة أو عرض شيء آخر، فإنها تستخدم سياجًا للوصول إلى تلك الذاكرة المشتركة. على الجهاز الذي يحتوي على رسومات منفصلة، ​​تتمتع وحدة معالجة الرسومات نفسها بذاكرة خاصة بها. تشترك جميع الهواتف المحمولة الحالية في ذاكرة الفيديو وذاكرة الوصول العشوائي مع وحدة تخزين فلاش الخاصة بذاكرة الوصول العشوائي. المشكلة هنا هي أن السياج غير قادر على الاكتمال مما يؤدي إلى ذعر النواة ويؤدي إلى إعادة تشغيل الهاتف.

أكمل حالة ذعر Kernel قبل إعادة التشغيل

[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 يعتقد أن سبب حدوث هذه المشكلة فقط على متصفح الإنترنت الخاص بشركة Samsung هو سبب حدوث مراقب GPU. في بعض الأحيان، قد تتعطل وحدة معالجة الرسومات (GPU) بسبب تظليلات طويلة الأمد، وفي هذه الحالة يكون لدى المتصفح أو نظام التشغيل عادةً مراقب GPU الذي يفرض إعادة تشغيل برنامج تشغيل الرسومات غير المستجيب. ال GraphicsFuzz يحتوي اختبار التظليل على العديد من حلقات for التي قد تجعل عرضه يستغرق وقتًا أطول، لكنه لا يزال تظليلًا صالحًا. تمكنت العديد من الأجهزة الأخرى، بما في ذلك Exynos 9810 Samsung Galaxy S9 المزود بوحدة معالجة الرسومات Mali-G72، من عرض هذا التظليل. وبذلك يكون الفريق في GraphicsFuzz توصلنا إلى استنتاج مفاده أن هذا الخطأ يحدث بسبب وجود خلل في برنامج تشغيل GPU لـ Adreno 630.

يتباطأ هاتف Google Pixel 2 XL المزود بوحدة معالجة الرسوميات Adreno 540 من Qualcomm Snapdragon 835 التي تعمل بنفس الإصدار من متصفح الإنترنت من Samsung إلى حد الزحف حسنًا - هذا يعني أن هذا الخطأ قد يكون مشكلة في برنامج تشغيل Qualcomm GPU الذي يعرض التظليل وعدم إنهاء مراقبة متصفح Samsung خدمة.

نأمل أن تتمكن Qualcomm من تشخيص المشكلة الأساسية في برنامج تشغيل GPU الخاص بها والذي يتسبب في إعادة التشغيل وتوفير برنامج تشغيل ثابت لشركة Samsung قريبًا. وبطبيعة الحال، قد يستغرق الأمر بعض الوقت قبل أن يتم نشر هذا التحديث للمستخدمين النهائيين. في هذه الأثناء، نتوقع أن تقوم سامسونج بإجراء تحديث لمتصفح الويب Samsung Internet للتخفيف من حدة المشكلة المشكلة (على الأقل منع استغلالها عبر صفحة ويب)، بما يتوافق مع سلوك Google كروم. على الرغم من أنه من المعروف أن هذه المشكلة تؤثر على Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+، إلا أنها قد تؤثر أيضًا على المزيد من الأجهزة التي تحتوي على Snapdragon 845.

إذا كنت مهتمًا باختبار موثوقية وحدة معالجة الرسومات لجهازك المحمول أو سطح المكتب، فإن الفريق في GraphicsFuzz قام بتجميع عرض توضيحي لتطبيق الويب يسمح لك بتشغيل بعض التظليلات الصالحة على جهازك. يمكنك الوصول إلى صفحة الويب هذه عن طريق باتباع هذا الرابط.

الجدول الزمني للإفصاح

  • 28 مارس 2018: GraphicsFuzz وصلت إلى مطوري XDA إعلامنا بالمسألة. مطوري XDA تم إعادة إنتاج المشكلة على جهاز Samsung Galaxy S9+ (SM-G965U).
  • 29 مارس 2018: GraphicsFuzz وتواصلت الشركة مع مزيد من التفاصيل وقمت بإعداد صفحات ويب خاصة لموظفي Qualcomm وSamsung لإعادة إنتاج الخطأ
  • 30 مارس 2018: مطوري XDA تواصلت مع كل من Samsung وQualcomm مع التفاصيل الكاملة للتقرير. اتصلت بنا جهة اتصال Qualcomm لتبلغنا باستلام رسالتنا.
  • 2 أبريل 2018: تواصلت معنا جهة اتصال Samsung إلينا لإبلاغنا باستلام رسالتنا.
  • 4 أبريل 2018: أوصت جهة الاتصال الخاصة بنا في Samsung بتقديم تقرير إلى Samsung التقارير الأمنية صفحة. مطوري XDA قدمت تقريرًا، وتم تعيين أحد مهندسي سامسونج لإعداد التقرير.