Samsung Galaxy S9 i Galaxy S9+ lansirani su na nekoliko tržišta uključujući SAD, Hong Kong i dijelove Latinske Amerike s Qualcomm Snapdragon 845 sustavom na čipu. Britanska tvrtka GraphicsFuzz otkrila je grešku stabilnosti GPU-a koja se može iskoristiti za pokretanje daljinskog ponovnog pokretanja/padanja telefona.
Novi Samsung Galaxy S9 uključuje najnoviji Qualcomm Snapdragon 845 sustav na čipu za nekoliko tržišta, uključujući Hong Kong, Sjedinjene Države, Kanadu i dijelove Latinske Amerike. Samsung je na nekim tržištima često birao najnoviji vodeći Qualcomm Snapdragon SoC umjesto vlastitog Exynos SoC-a. To je obično slučaj u Sjedinjenim Državama, s izuzetkom Samsung Galaxy S6. Za prosječnog potrošača postoji mala razlika između varijanti Exynos 9810 i Snapdragon 845. Međutim, unutar haube, razlika u čipsetovima može dovesti do nevjerojatno različitih iskustava.
AnandtechPregled Snapdragon Galaxy S9 i Exynos Galaxy S9 otkrio je velike razlike u performansama i trajanje baterije između dva modela, pri čemu model Snapdragon lako nadmašuje model Exynos. S ova dva znatno različita skupa čipova, čini se da razlika u performansama ovoga puta nije jedina briga, prema britanskoj tvrtki tzv.
GraphicsFuzz. GraphicsFuzz je start-up tvrtka specijalizirana za testiranje pouzdanosti GPU-a na uređajima. Oni razvijaju testove za traženje grešaka u grafičkim upravljačkim programima i nude pomoć u dijagnosticiranju temeljnih uzroka svih problema koje otkriju. Na primjer, tim je otkrio sigurnosni problem koji utječu na ARM upravljački program za Samsung Galaxy S6, za što im je Google dodijelio nagradu za bugove. Tijekom testiranja Snapdragon Samsung Galaxy S9, GraphicsFuzz pronašli pogrešku u grafičkom upravljačkom programu Adreno 630 koja im omogućuje pokrenuti ponovno pokretanje cijelog telefona putem valjane WebGL internetske stranice prilikom pregledavanja standardnim Samsung internetskim preglednikom.Konkretno, postoji pogreška u Adreno 630 renderiranju složenog, ali važećeg shadera koji se može iskoristiti da se uređaj zamrzne i eventualno ponovno pokrene. Shader je jednostavno program koji GPU-u omogućuje renderiranje slike. GraphicsFuzz nisu dizajnirali WebGL stranicu sa zlonamjernom namjerom da pokrenu ovu pogrešku, već kažu da je slučajno otkrivena tijekom njihovog standardnog testiranja stabilnosti GPU-a uređaja. Nakon što su otkrili da se ovaj daljinski pad može ponoviti, tvrtka je posegnula za njim XDA programeri kako bi se olakšao postupak otkrivanja i kod Qualcomma i kod Samsunga.
WebGL reprodukcija pada na Snapdragon Samsung Galaxy S9
Prije nego što smo došli do predstavnika bilo koje tvrtke, potvrdili smo GraphicsFuzznalaze na našem vlastitom uređaju. GraphicsFuzz postavili posebnu web stranicu za testiranje, a mi smo odabrali 5 najpopularnijih internetskih preglednika u trgovini Google Play da vidimo što će se dogoditi. Donja tablica prikazuje učinke renderiranja složenog shadera na 5 različitih web preglednika.
Testiran uređaj: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)
Operacijski sustav: Android 8.0.0 Oreo SM-G965U
Web-preglednik |
Proizlaziti |
---|---|
Google Chrome v65.0.3325.109 |
Zamrzava se samo na ~2 sekunde |
Samsung Internet v7.0.10.46 |
Zamrzava se i na kraju pokreće potpuno ponovno pokretanje |
Opera v45.1.2246.125351 |
Zamrzava telefon |
Microsoft Edge v1.0.0.1726 |
Zamrzava se samo na ~3 sekunde |
Firefox v59.0.2 |
Preglednik se ruši |
I Google Chrome i Microsoft Edge će zamrznuti telefon na nekoliko sekundi i generirati WebGL pogrešku, ali uređaj će na kraju biti u redu. GraphicsFuzz izvijestili su nas da već neko vrijeme razgovaraju s Google Chrome timom i da su naučili da Chrome implementira mehanizam koji završava proces GPU-a nakon određenog vremenskog razdoblja kako bi spriječio pun telefon sudar. Opera zamrzava telefon, ali ne pokreće ponovno pokretanje. Sama aplikacija Firefox se ruši, ali telefon je u redu. Na kraju, pristupanje stranici putem Samsung Interneta uzrokuje usporavanje telefona do puzanja prije nego što pokrene potpuno ponovno pokretanje telefona.
Evo video demonstracije sudara:
Detaljno objašnjenje pogreške
GraphicsFuzz izvršio dublju istragu koja ukazuje da je problem koji uzrokuje ponovno pokretanje telefona u GPU upravljačkom programu za Qualcomm Adreno 630 koji je dio Qualcomm Snapdragon 845 sustav na čipu. GraphicsFuzz prikupio zapisnik o padu, koji smo ugradili u nastavku. Da dam kratak sažetak onoga što se događa, kada telefon renderira složeni shader, GPU postavlja nešto što se zove "ograda". Ograda se koristi za orkestriranje pristupa zajedničkoj memoriji između CPU-a i GPU. Mobilni GPU, za razliku od stolnog računala, ima pristup istom RAM-u kao i CPU, tako da kada se igra igra ili nešto drugo renderira, koristi ogradu za pristup toj zajedničkoj memoriji. Na uređaju koji ima diskretnu grafiku, sam GPU ima vlastitu memoriju. Svi današnji mobilni telefoni dijele video memoriju i memoriju s izravnim pristupom s RAM-om za flash pohranu. Problem je u tome što se ograda ne može dovršiti što izaziva paniku kernela i uzrokuje ponovno pokretanje telefona.
Dovršite paniku kernela prije ponovnog pokretanja
[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
Čitaj više
GraphicsFuzz vjeruje da je razlog zašto se ovaj problem događa samo na Samsung internetskom pregledniku GPU watchdog. Ponekad se GPU može zaustaviti na dugotrajnim shaderima, u kojem slučaju preglednik ili OS obično ima GPU nadzornika koji prisilno ponovno pokreće grafički upravljački program koji ne reagira. The GraphicsFuzz probni shader ima nekoliko for petlji zbog kojih bi renderiranje moglo potrajati dulje, ali je još uvijek važeći shader. Nekoliko drugih uređaja, uključujući Exynos 9810 Samsung Galaxy S9 s Mali-G72 GPU-om, uspijeva renderirati ovaj shader. Dakle, tim na GraphicsFuzz došao je do zaključka da se ova pogreška događa zbog neispravnog GPU upravljačkog programa za Adreno 630.
Google Pixel 2 XL s Adreno 540 GPU-om Qualcomm Snapdragon 835 koji pokreće istu verziju Samsungovog internetskog preglednika usporava do puzanja kao pa—to znači da bi ova pogreška mogla biti problem s Qualcomm GPU drajverom koji renderira shader i Samsung Browser watchdog ne prekida servis.
Nadajmo se da će Qualcomm moći dijagnosticirati temeljni problem u svom GPU upravljačkom programu koji uzrokuje ponovno pokretanje i Samsungu uskoro dostaviti popravljeni upravljački program. Naravno, moglo bi proći neko vrijeme prije nego što se ovo ažuriranje proširi na krajnje korisnike. U međuvremenu, očekujemo da će Samsung pokrenuti ažuriranje Samsung internetskog web preglednika kako bi ublažio problem (barem sprječavajući njegovo iskorištavanje putem web stranice), podudarajući se s ponašanjem Googlea Krom. Iako je poznato da ovaj problem utječe na Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, također bi mogao utjecati na više uređaja sa Snapdragonom 845.
Ako ste zainteresirani za testiranje pouzdanosti GPU-a vlastitog mobilnog ili stolnog uređaja, tim na GraphicsFuzz sastavio je demonstraciju web aplikacije koja vam omogućuje pokretanje nekih od njihovih valjanih shadera na vašem uređaju. Toj web stranici možete pristupiti putem slijedeći ovaj link.
Vremenska traka otkrivanja
- 28. ožujka 2018: GraphicsFuzz posegnuo za XDA programeri informirajući nas o problemu. XDA programeri ponovili smo problem na vlastitom Samsung Galaxy S9+ (SM-G965U).
- 29. ožujka 2018: GraphicsFuzz došao s više detalja i postavio posebne web stranice za zaposlenike Qualcomma i Samsunga kako bi reproducirali bug
- 30. ožujka 2018: XDA programeri obratio se i Samsungu i Qualcommu s potpunim detaljima izvješća. Kontakt s Qualcommom javio nam se i potvrdio da je naša poruka primljena.
- 2. travnja 2018: Naš Samsung kontakt javio nam se i potvrdio da je naša poruka primljena.
- 4. travnja 2018: Naš kontakt za Samsung preporučio je da podnesemo izvješće Samsungu Sigurnosno izvješćivanje stranica. XDA programeri podnio izvješće, a Samsungov inženjer je dodijeljen izvješću.