A Snapdragon Samsung Galaxy S9 GPU-stabilitási hibával rendelkezik, amely kihasználható távoli újraindítások indítására

A Samsung Galaxy S9 és Galaxy S9+ több piacon is megjelent, köztük az Egyesült Államokban, Hongkongban és Latin-Amerika egyes részein a Qualcomm Snapdragon 845 rendszerchippel. Az egyesült királyságbeli GraphicsFuzz cég felfedezett egy GPU-stabilitási hibát, amely kihasználható távoli telefon-újraindítás/összeomlás kiváltására.

Az új Samsung Galaxy S9 tartalmazza a legújabb Qualcomm Snapdragon 845 chip-alapú rendszert számos piacra, beleértve Hongkongot, az Egyesült Államokat, Kanadát és Latin-Amerika egyes részeit. A Samsung egyes piacokon gyakran a legújabb zászlóshajó Qualcomm Snapdragon SoC-t választotta a házon belüli Exynos SoC helyett. Általában ez a helyzet az Egyesült Államokban, a Samsung Galaxy S6 kivételével. Az átlagos fogyasztó számára kevés különbség van az Exynos 9810 és a Snapdragon 845 változatok között. A motorháztető alatt azonban a chipkészletek különbsége merőben eltérő élményekhez vezethet.

AnandtechA Snapdragon Galaxy S9 és az Exynos Galaxy S9 áttekintése éles teljesítménybeli különbségeket tárt fel és az akkumulátor élettartama a két modell között, a Snapdragon modell könnyedén felülmúlja az Exynos modellt. Egy brit székhelyű cég szerint ezzel a két nagymértékben eltérő lapkakészlettel ezúttal nem a teljesítménybeli különbség az egyetlen probléma.

GraphicsFuzz. GraphicsFuzz egy induló cég, amely a GPU megbízhatóságának tesztelésére szakosodott eszközökön. Teszteket fejlesztenek a grafikus illesztőprogramok hibáinak felderítésére, és segítséget nyújtanak az általuk felfedezett problémák kiváltó okainak diagnosztizálásában. A csapat például biztonsági problémát fedezett fel hatással van a Samsung Galaxy S6 ARM illesztőprogramjára, amiért a Google hibadíjat kapott. A Snapdragon Samsung Galaxy S9 tesztelése során GraphicsFuzz hibát talált az Adreno 630 grafikus illesztőprogramjában, amely lehetővé teszi számukra indítsa el a teljes telefon újraindítását érvényes WebGL internetes oldalon keresztül, amikor a Samsung készlet internetes böngészővel böngészik.

Különösen az Adreno 630 egy összetett, de érvényes shader renderelésében van hiba, amelyet kihasználva lefagy az eszköz, majd végül újraindul. A shader egyszerűen egy olyan program, amely lehetővé teszi a GPU számára a kép megjelenítését. GraphicsFuzz nem tervezték meg a WebGL-oldalt rosszindulatú szándékkal, hogy kiváltsák ezt a hibát, hanem azt mondták, hogy véletlenül fedezték fel az eszközök GPU-stabilitási szabványos tesztelése során. Miután felfedezték, hogy ez a távoli összeomlás reprodukálható, a cég megkereste XDA-fejlesztők hogy megkönnyítse a nyilvánosságra hozatali folyamatot mind a Qualcomm, mind a Samsung esetében.

WebGL összeomlási reprodukció a Snapdragon Samsung Galaxy S9 készüléken

Mielőtt bármelyik cég képviselőihez fordultunk volna, érvényesítettük GraphicsFuzzsaját készülékünkön talált eredményeket. GraphicsFuzz létrehoztunk egy speciális weboldalt, amellyel tesztelhetjük, és kiválasztottuk a Google Play Áruház 5 legnépszerűbb internetes böngészőjét, hogy megnézzük, mi fog történni. Az alábbi táblázat a komplex shader megjelenítésének hatásait mutatja be 5 különböző webböngészőn.

Tesztelt eszköz: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

Operációs rendszer: Android 8.0.0 Oreo SM-G965U

Böngésző

Eredmény

Google Chrome v65.0.3325.109

Csak ~2 másodpercre lefagy

Samsung Internet v7.0.10.46

Lefagy, majd végül teljes újraindítást indít el

Opera v45.1.2246.125351

Lefagy a telefon

Microsoft Edge v1.0.0.1726

Csak ~3 másodpercre lefagy

Firefox v59.0.2

A böngésző összeomlik

A Google Chrome és a Microsoft Edge is lefagyasztja a telefont néhány másodpercre, és WebGL hibát generál, de az eszköz végül rendben lesz. GraphicsFuzz arról számolt be nekünk, hogy egy ideje tárgyalnak a Google Chrome csapatával, és tanultak hogy a Chrome olyan mechanizmust valósít meg, amely egy meghatározott idő elteltével leállítja a GPU-folyamatot, hogy megakadályozza a teljes telefont összeomlik. Az Opera lefagyasztja a telefont, de nem indítja el az újraindítást. Maga a Firefox alkalmazás összeomlik, de a telefon rendben van. Végül, ha az oldalt Samsung Interneten keresztül éri el, a telefon lelassul a feltérképezésig, mielőtt elindítaná a telefon teljes újraindítását.

Íme egy videó bemutató a balesetről:

A hiba részletes magyarázata

GraphicsFuzz alaposabb vizsgálatot végzett, amely azt jelzi, hogy a telefon újraindítását okozó probléma az a Qualcomm Adreno 630 GPU-illesztőprogramjában, amely a Qualcomm Snapdragon 845 része rendszer chipen. GraphicsFuzz összegyűjtöttünk egy naplót az összeomlásról, amelyet alább beágyaztunk. Hogy röviden összefoglaljuk, mi történik, amikor a telefon megjeleníti az összetett shadert, a GPU beállítja valami úgynevezett "kerítés". Egy kerítést használnak a CPU közötti megosztott memóriához való hozzáférés megszervezésére és GPU. A mobil GPU, az asztali számítógépekkel ellentétben, ugyanahhoz a RAM-hoz fér hozzá, mint a CPU, így amikor egy játékot játszanak vagy valami más renderel, egy kerítést használ a megosztott memória eléréséhez. A különálló grafikával rendelkező eszközökön maga a GPU saját memóriával rendelkezik. Az összes jelenlegi mobiltelefon megosztja a videomemóriát és a véletlen hozzáférésű memóriát a RAM flash tárolójával. A probléma itt az, hogy a kerítés nem képes befejezni, ami kernelpánikot vált ki, és a telefon újraindítását okozza.

Teljesítse a kernelpánikot az újraindítás előtt

[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

Olvass tovább

GraphicsFuzz úgy véli, hogy ez a probléma csak a Samsung internetböngészőjében fordul elő, a GPU-felügyelet miatt. Néha a GPU lefagy a régóta működő shadereken, ilyenkor a böngészőben vagy az operációs rendszerben általában van egy GPU-figyelő, amely kényszeríti a nem reagáló grafikus illesztőprogram újraindítását. A GraphicsFuzz A tesztshadernek több for ciklus is van, amelyek miatt tovább tarthat a renderelés, de továbbra is érvényes shader. Számos más eszköz, köztük a Mali-G72 GPU-val rendelkező Exynos 9810 Samsung Galaxy S9 is képes renderelni ezt a shadert. Így a csapat at GraphicsFuzz arra a következtetésre jutott, hogy ez a hiba az Adreno 630 hibás GPU-illesztőprogramja miatt következik be.

A Google Pixel 2 XL a Qualcomm Snapdragon 835 Adreno 540 GPU-jával, amely a Samsung internetböngészőjének ugyanazt a verzióját futtatja, lelassul a feltérképezésig, mint Nos – ez azt jelenti, hogy ez a hiba abból adódhat, hogy a Qualcomm GPU illesztőprogramja rendereli a shadert, és a Samsung Browser watchdog nem fejezi be a szolgáltatás.

Remélhetőleg a Qualcomm képes diagnosztizálni a mögöttes problémát a GPU-illesztőprogramjában, amely az újraindítást okozza, és hamarosan javított illesztőprogramot biztosít a Samsung számára. Természetesen eltarthat egy ideig, amíg ez a frissítés eljut a végfelhasználókhoz. Időközben arra számítunk, hogy a Samsung frissítést fog tenni a Samsung internetes böngészőjébe, hogy enyhítse a helyzetet a probléma (legalábbis megakadályozza, hogy egy weboldalon keresztül kihasználják), megfeleljen a Google viselkedésének Króm. Noha ez a probléma köztudottan érinti a Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+ készüléket, a Snapdragon 845-tel több eszközt is érinthet.

Ha szeretné tesztelni saját mobil- vagy asztali eszköze GPU-megbízhatóságát, a csapat a címen GraphicsFuzz összeállított egy webalkalmazás bemutatót, amely lehetővé teszi néhány érvényes shader futtatását az eszközön. A weboldalt a következőképpen érheti el ezt a linket követve.

Közzétételi idővonal

  • 2018. március 28: GraphicsFuzz felé nyúlt XDA-fejlesztők tájékoztat minket a problémáról. XDA-fejlesztők a problémát saját Samsung Galaxy S9+ (SM-G965U) készülékünkön reprodukáltuk.
  • 2018. március 29: GraphicsFuzz megkereste a további részleteket, és speciális weboldalakat hozott létre a Qualcomm és a Samsung alkalmazottai számára a hiba reprodukálására
  • 2018. március 30: XDA-fejlesztők megkereste a Samsungot és a Qualcommot is a jelentés részleteivel. Qualcomm kapcsolattartónk visszakeresett minket, és elismerte, hogy üzenetünket megkaptuk.
  • 2018. április 2: Samsung kapcsolattartónk visszakeresett minket, elismerve, hogy üzenetünket megkaptuk.
  • 2018. április 4: Samsung kapcsolattartónk azt javasolta, hogy tegyen bejelentést a Samsungnál Biztonsági jelentés oldalon. XDA-fejlesztők jelentést nyújtott be, és a jelentéshez Samsung mérnököt rendeltek.