Snapdragon Samsung Galaxy S9 má chybu stability GPU, kterou lze využít ke spuštění vzdáleného restartu

Samsung Galaxy S9 a Galaxy S9+ byly uvedeny na několik trhů včetně USA, Hongkongu a částí Latinské Ameriky se systémem Qualcomm Snapdragon 845 na čipu. Britská firma GraphicsFuzz objevila chybu stability GPU, kterou lze zneužít ke spuštění vzdáleného restartování/zhroucení telefonu.

Nové Samsung Galaxy S9 zahrnuje nejnovější systém na čipu Qualcomm Snapdragon 845 pro několik trhů, včetně Hongkongu, Spojených států, Kanady a částí Latinské Ameriky. Samsung na některých trzích často volí nejnovější vlajkovou loď Qualcomm Snapdragon SoC před vlastním SoC Exynos. Ve Spojených státech to tak bývá, s výjimkou Samsungu Galaxy S6. Pro běžného spotřebitele je mezi variantami Exynos 9810 a Snapdragon 845 malý rozdíl. Pod kapotou však může rozdíl v čipových sadách vést k velmi odlišným zkušenostem.

AnandtechRecenze Snapdragon Galaxy S9 a Exynos Galaxy S9 odhalila výrazné rozdíly ve výkonu a výdrž baterie mezi oběma modely, přičemž model Snapdragon snadno předčí model Exynos. S těmito dvěma naprosto odlišnými čipsety se zdá, že rozdíl ve výkonu není tentokrát jediným problémem, podle britské společnosti s názvem 

GraphicsFuzz. GraphicsFuzz je začínající firma, která se specializuje na testování spolehlivosti GPU na zařízeních. Vyvíjejí testy pro hledání chyb v grafických ovladačích a nabízejí pomoc při diagnostice hlavních příčin jakýchkoli problémů, které objeví. Tým například objevil bezpečnostní problém ovlivňující ovladač ARM pro Samsung Galaxy S6, za což jim společnost Google udělila odměnu za chyby. Během testování Snapdragonu Samsung Galaxy S9, GraphicsFuzz našli chybu v grafickém ovladači Adreno 630, který jim to umožňuje spustit restart celého telefonu prostřednictvím platné internetové stránky WebGL při procházení standardním internetovým prohlížečem Samsung.

Konkrétně se jedná o chybu ve vykreslování komplexního, ale platného shaderu Adreno 630, který lze zneužít k zamrznutí zařízení a následnému restartu. Shader je jednoduše program, který umožňuje GPU vykreslit obrázek. GraphicsFuzz nenavrhli stránku WebGL se zlým úmyslem spustit tuto chybu a místo toho uvedli, že byla náhodně objevena během jejich standardního testování stability GPU zařízení. Jakmile zjistili, že tato vzdálená havárie je reprodukovatelná, společnost sáhla XDA-Developers usnadnit proces zveřejňování u Qualcommu i Samsungu.

WebGL Crash Reproduction na Snapdragon Samsung Galaxy S9

Než jsme oslovili zástupce obou společností, ověřili jsme to GraphicsFuzz's nálezy na našem vlastním zařízení. GraphicsFuzz vytvořili jsme speciální webovou stránku, na které jsme mohli testovat, a vybrali jsme 5 nejoblíbenějších internetových prohlížečů v Obchodě Google Play, abychom viděli, co se stane. Níže uvedená tabulka ukazuje účinky vykreslování komplexního shaderu v 5 různých webových prohlížečích.

Zařízení testováno: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

Operační systém: Android 8.0.0 Oreo SM-G965U

Webový prohlížeč

Výsledek

Google Chrome v65.0.3325.109

Zamrzne pouze na 2 sekundy

Samsung Internet v7.0.10.46

Zamrznutí pak nakonec spustí úplný restart

Opera v45.1.2246.125351

Zamrzne telefon

Microsoft Edge v1.0.0.1726

Zamrzne pouze na 3 sekundy

Firefox v59.0.2

Selhání prohlížeče

Google Chrome i Microsoft Edge telefon na pár sekund zamrznou a vygenerují chybu WebGL, ale zařízení bude nakonec v pořádku. GraphicsFuzz nám oznámili, že už nějakou dobu diskutovali s týmem Google Chrome a poučili se že Chrome implementuje mechanismus, který ukončí proces GPU po uplynutí nastavené doby, aby se zabránilo úplnému telefonu pád. Opera zamrzne telefon, ale nespustí restart. Samotná aplikace Firefox spadne, ale telefon je v pořádku. A konečně, přístup na stránku přes internet Samsung způsobí, že se telefon zpomalí na procházení, než se spustí úplný restart telefonu.

Zde je video ukázka havárie:

Podrobné vysvětlení chyby

GraphicsFuzz provedli podrobnější šetření, které naznačuje, že problém způsobující restartování telefonu je v ovladači GPU pro Qualcomm Adreno 630, který je součástí Qualcomm Snapdragon 845 systém na čipu. GraphicsFuzz shromáždili protokol o havárii, který jsme vložili níže. Pro stručné shrnutí toho, co se děje, když telefon vykresluje složitý shader, nastaví GPU něco, čemu se říká „plot“. K řízení přístupu ke sdílené paměti mezi CPU se používá plot a GPU. Mobilní GPU má na rozdíl od stolního počítače přístup ke stejné paměti RAM jako CPU, takže když se hraje hra nebo se vykresluje něco jiného, ​​používá k přístupu ke sdílené paměti plot. Na zařízení, které má diskrétní grafiku, má vlastní GPU vlastní paměť. Všechny současné mobilní telefony sdílejí videopaměť a paměť s náhodným přístupem s flash úložištěm RAM. Problém je v tom, že plot není schopen dokončit, což vyvolá paniku jádra a způsobí restart telefonu.

Dokončete paniku jádra před restartem

[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

Přečtěte si více

GraphicsFuzz věří, že důvodem, proč k tomuto problému dochází pouze v internetovém prohlížeči Samsung, je hlídací pes GPU. Někdy může GPU přestat fungovat na dlouho běžících shaderech, v takovém případě má prohlížeč nebo OS obvykle hlídacího psa GPU, který vynucuje restart nereagujícího grafického ovladače. The GraphicsFuzz testovací shader má několik smyček for, které mohou vykreslení prodloužit, ale stále je to platný shader. Několik dalších zařízení, včetně Exynos 9810 Samsung Galaxy S9 s GPU Mali-G72, dokáže tento shader vykreslit. Tým na GraphicsFuzz dospěl k závěru, že k této chybě dochází kvůli vadnému ovladači GPU pro Adreno 630.

Google Pixel 2 XL s grafickým procesorem Adreno 540 Qualcomm Snapdragon 835 se stejnou verzí internetového prohlížeče Samsung se zpomaluje na procházení jako no – to znamená, že tato chyba může být problém s ovladačem Qualcomm GPU vykreslujícím shader a hlídačem prohlížeče Samsung, který neukončuje servis.

Doufejme, že Qualcomm dokáže diagnostikovat základní problém v ovladači GPU, který způsobuje restart, a brzy poskytne společnosti Samsung opravený ovladač. Samozřejmě může nějakou dobu trvat, než se tato aktualizace rozšíří mezi koncové uživatele. Mezitím očekáváme, že společnost Samsung pro zmírnění situace vytlačí aktualizaci internetového prohlížeče Samsung problém (přinejmenším brání jeho zneužití prostřednictvím webové stránky), který odpovídá chování společnosti Google Chrome. Ačkoli je známo, že tento problém ovlivňuje Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, mohl by také ovlivnit více zařízení se Snapdragonem 845.

Pokud máte zájem otestovat spolehlivost GPU svého vlastního mobilního nebo stolního zařízení, tým na GraphicsFuzz sestavil ukázku webové aplikace, která vám umožní spustit některé z jejich platných shaderů na vašem zařízení. Na tuto webovou stránku se dostanete přes po tomto odkazu.

Časová osa zveřejnění

  • 28. března 2018: GraphicsFuzz natáhl se k XDA-Developers nás o problému informuje. XDA-Developers reprodukovali problém na našem vlastním Samsungu Galaxy S9+ (SM-G965U).
  • 29. března 2018: GraphicsFuzz požádali o další podrobnosti a vytvořili speciální webové stránky pro zaměstnance Qualcommu a Samsungu, aby chybu reprodukovali
  • 30. března 2018: XDA-Developers oslovil Samsung i Qualcomm s úplnými detaily zprávy. Náš kontakt na Qualcomm nás kontaktoval a potvrdil, že naše zpráva byla přijata.
  • 2. dubna 2018: Náš kontakt Samsung nás kontaktoval a potvrdil, že naše zpráva byla přijata.
  • 4. dubna 2018: Náš kontakt na Samsung nám doporučil, abychom podali hlášení u společnosti Samsung Bezpečnostní hlášení strana. XDA-Developers podal zprávu a ke zprávě byl přidělen inženýr společnosti Samsung.