Snapdragon Samsung Galaxy S9 má chybu stability GPU, ktorú je možné využiť na spustenie vzdialeného reštartu

click fraud protection

Samsung Galaxy S9 a Galaxy S9+ boli uvedené na trh na niekoľkých trhoch vrátane USA, Hongkongu a častí Latinskej Ameriky so systémom Qualcomm Snapdragon 845 na čipe. Britská firma GraphicsFuzz objavila chybu stability GPU, ktorú možno zneužiť na spustenie vzdialeného reštartu/zrútenia telefónu.

Nové Samsung Galaxy S9 zahŕňa najnovší systém Qualcomm Snapdragon 845 na čipe pre niekoľko trhov vrátane Hongkongu, Spojených štátov amerických, Kanady a niektorých častí Latinskej Ameriky. Spoločnosť Samsung na niektorých trhoch často uprednostňuje najnovšiu vlajkovú loď Qualcomm Snapdragon SoC namiesto vlastného SoC Exynos. V Spojených štátoch je to zvyčajne prípad, s výnimkou Samsungu Galaxy S6. Pre bežného spotrebiteľa je medzi variantmi Exynos 9810 a Snapdragon 845 malý rozdiel. Pod kapotou však rozdiel v čipsetoch môže viesť k úplne odlišným zážitkom.

AnandtechRecenzia Snapdragon Galaxy S9 a Exynos Galaxy S9 odhalila výrazné rozdiely vo výkone a výdrž batérie medzi týmito dvoma modelmi, pričom model Snapdragon ľahko prekoná model Exynos. S týmito dvoma výrazne odlišnými čipsetmi sa zdá, že rozdiel vo výkone nie je tentoraz jediným problémom, podľa spoločnosti so sídlom v Spojenom kráľovstve s názvom 

GraphicsFuzz. GraphicsFuzz je začínajúca firma, ktorá sa špecializuje na testovanie spoľahlivosti GPU na zariadeniach. Vyvíjajú testy na hľadanie chýb v ovládačoch grafiky a ponúkajú pomoc pri diagnostike základných príčin akýchkoľvek problémov, ktoré zistia. Napríklad tím objavil bezpečnostný problém ovplyvňujúci ovládač ARM pre Samsung Galaxy S6, za čo im spoločnosť Google udelila odmenu za chyby. Počas testovania Snapdragonu Samsung Galaxy S9, GraphicsFuzz našli chybu v ovládači grafiky Adreno 630, ktorá im to umožňuje spustiť reštart celého telefónu cez platnú webovú stránku WebGL pri prehliadaní pomocou bežného internetového prehliadača Samsung.

Konkrétne ide o chybu vo vykresľovaní zložitého, ale platného shadera Adreno 630, ktorý možno zneužiť na zamrznutie zariadenia a následné reštartovanie. Shader je jednoducho program, ktorý umožňuje GPU vykresliť obrázok. GraphicsFuzz nenavrhli stránku WebGL so zlým úmyslom spustiť túto chybu a namiesto toho tvrdia, že bola náhodne objavená počas štandardného testovania GPU stability zariadení. Akonáhle zistili, že táto vzdialená havária je reprodukovateľná, spoločnosť oslovila XDA-Developers na uľahčenie procesu zverejňovania s Qualcommom aj Samsungom.

WebGL Crash Reproduction na Snapdragon Samsung Galaxy S9

Predtým, ako sme oslovili zástupcov jednej alebo druhej spoločnosti, overili sme to GraphicsFuzzzistenia na našom vlastnom zariadení. GraphicsFuzz vytvorili sme špeciálnu webovú stránku, na ktorej sme mohli testovať, a vybrali sme 5 najpopulárnejších internetových prehliadačov v obchode Google Play, aby sme videli, čo sa stane. Nižšie uvedená tabuľka ukazuje účinky vykresľovania komplexného shadera v 5 rôznych webových prehliadačoch.

Testované zariadenie: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

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

Webový prehliadač

Výsledok

Google Chrome v65.0.3325.109

Zamrzne iba na približne 2 sekundy

Samsung Internet v7.0.10.46

Zamrznutie potom nakoniec spustí úplný reštart

Opera v45.1.2246.125351

Zamrzne telefón

Microsoft Edge v1.0.0.1726

Zamrzne iba na približne 3 sekundy

Firefox v59.0.2

Zlyhanie prehliadača

Prehliadač Google Chrome aj Microsoft Edge telefón na niekoľko sekúnd zmrazia a vygenerujú chybu WebGL, ale zariadenie bude nakoniec v poriadku. GraphicsFuzz nám oznámili, že už nejaký čas diskutovali s tímom Google Chrome a naučili sa že Chrome implementuje mechanizmus, ktorý ukončí proces GPU po uplynutí nastaveného času, aby sa zabránilo úplnému telefónu havarovať. Opera zamrzne telefón, ale nespustí reštart. Samotná aplikácia Firefox zlyhá, ale telefón je v poriadku. Nakoniec, prístup na stránku cez internet Samsung spôsobí, že sa telefón pred spustením úplného reštartu telefónu spomalí na prehľadávanie.

Tu je video ukážka havárie:

Podrobné vysvetlenie chyby

GraphicsFuzz vykonali hlbšie vyšetrovanie, ktoré naznačuje, že problém spôsobujúci reštartovanie telefónu je v ovládači GPU pre Qualcomm Adreno 630, ktorý je súčasťou Qualcomm Snapdragon 845 systém na čipe. GraphicsFuzz zhromaždili denník o havárii, ktorý sme vložili nižšie. Ak chcete stručne zhrnúť, čo sa deje, keď telefón vykreslí zložitý shader, nastaví sa GPU niečo, čomu sa hovorí „plot“. Na organizáciu prístupu k zdieľanej pamäti medzi CPU sa používa plot a GPU. Mobilný GPU, na rozdiel od stolného počítača, má prístup k rovnakej RAM ako CPU, takže keď sa hrá hra alebo sa vykresľuje niečo iné, používa na prístup k zdieľanej pamäti plot. Na zariadení, ktoré má diskrétnu grafiku, má samotná GPU vlastnú pamäť. Všetky súčasné mobilné telefóny zdieľajú videopamäť a pamäť s náhodným prístupom s flash pamäťou RAM. Problém je v tom, že plot nie je schopný dokončiť, čo spúšťa paniku v jadre a spôsobí reštart telefónu.

Dokončite jadrovú paniku pred reštartom

[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

čítaj viac

GraphicsFuzz je presvedčený, že dôvodom, prečo sa tento problém vyskytuje iba v internetovom prehliadači Samsung, je problém strážneho GPU. Niekedy môže GPU visieť na dlho spustených shaderoch, v takom prípade má prehliadač alebo OS zvyčajne strážneho psa GPU, ktorý vynúti reštart nereagujúceho grafického ovládača. The GraphicsFuzz testovací shader má niekoľko cyklov for, ktoré môžu spomaliť vykreslenie, ale stále je to platný shader. Niekoľko ďalších zariadení, vrátane Exynos 9810 Samsung Galaxy S9 s GPU Mali-G72, dokáže vykresliť tento shader. Tým na GraphicsFuzz dospel k záveru, že k tejto chybe dochádza v dôsledku chybného ovládača GPU pre Adreno 630.

Google Pixel 2 XL s grafickým procesorom Adreno 540 Qualcomm Snapdragon 835 s rovnakou verziou internetového prehliadača Samsung sa spomalí. no – to znamená, že táto chyba môže byť problémom s ovládačom Qualcomm GPU vykresľujúcim shader a sledovacím programom prehliadača Samsung, ktorý neukončuje služby.

Dúfajme, že spoločnosť Qualcomm dokáže diagnostikovať základný problém v ovládači GPU, ktorý spôsobuje reštart, a čoskoro poskytne spoločnosti Samsung opravený ovládač. Samozrejme, môže chvíľu trvať, kým sa táto aktualizácia rozšíri medzi koncových používateľov. Medzičasom očakávame, že spoločnosť Samsung vytlačí aktualizáciu internetového webového prehliadača Samsung, aby sa zmiernila problém (aspoň bráni jeho zneužitiu prostredníctvom webovej stránky), ktorý zodpovedá správaniu spoločnosti Google Chrome. Aj keď je známe, že tento problém ovplyvňuje Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, môže sa týkať aj viacerých zariadení so Snapdragonom 845.

Ak máte záujem otestovať spoľahlivosť GPU vášho vlastného mobilného alebo stolného zariadenia, tím na GraphicsFuzz zostavil ukážku webovej aplikácie, ktorá vám umožní spustiť niektoré z ich platných shaderov na vašom zariadení. Na túto webovú stránku môžete pristupovať pomocou po tomto odkaze.

Časová os zverejnenia

  • 28. marca 2018: GraphicsFuzz natiahol sa k XDA-Developers informuje nás o probléme. XDA-Developers reprodukovali problém na našom vlastnom Samsung Galaxy S9+ (SM-G965U).
  • 29. marca 2018: GraphicsFuzz oslovili s ďalšími podrobnosťami a vytvorili špeciálne webové stránky pre zamestnancov Qualcommu a Samsungu na reprodukovanie chyby
  • 30. marca 2018: XDA-Developers oslovili Samsung aj Qualcomm s úplnými podrobnosťami správy. Náš kontakt na Qualcomm nás kontaktoval a potvrdil, že naša správa bola prijatá.
  • 2. apríla 2018: Náš kontakt Samsung nás kontaktoval a potvrdil, že naša správa bola prijatá.
  • 4. apríla 2018: Náš kontakt na spoločnosť Samsung nám odporučil, aby sme nahlásili spoločnosť Samsung Bezpečnostné hlásenia stránku. XDA-Developers podal správu a k správe bol priradený inžinier Samsung.