Samsung Galaxy S9 og Galaxy S9+ blev lanceret på flere markeder, herunder USA, Hong Kong og dele af Latinamerika med Qualcomm Snapdragon 845 system-on-chip. Det britiske firma GraphicsFuzz opdagede en GPU-stabilitetsfejl, der kan udnyttes til at udløse fjerngenstart/nedbrud af telefonen.
Den nye Samsung Galaxy S9 inkluderer det seneste Qualcomm Snapdragon 845 system-on-chip til flere markeder, herunder Hong Kong, USA, Canada og dele af Latinamerika. Samsung har ofte valgt det seneste flagskib Qualcomm Snapdragon SoC frem for deres interne Exynos SoC på nogle markeder. Dette er normalt tilfældet i USA, med undtagelse af Samsung Galaxy S6. For den gennemsnitlige forbruger er der lille forskel mellem Exynos 9810 og Snapdragon 845 varianterne. Under hætten kan forskellen i chipsæt dog føre til vildt forskellige oplevelser.
Anandtech's anmeldelse af Snapdragon Galaxy S9 og Exynos Galaxy S9 afslørede markante forskelle i ydeevne og batterilevetid mellem de to modeller, hvor Snapdragon-modellen let klarer sig bedre end Exynos-modellen. Med disse to vidt forskellige chipsæt ser en forskel i ydeevne ikke ud til at være den eneste bekymring denne gang, ifølge et britisk baseret firma kaldet
GraphicsFuzz. GraphicsFuzz er et nystartet firma, der har specialiseret sig i at teste GPU-pålidelighed på enheder. De udvikler tests til at lede efter fejl i grafikdrivere og tilbyder hjælp til at diagnosticere de grundlæggende årsager til eventuelle problemer, de opdager. For eksempel opdagede holdet et sikkerhedsproblem påvirker ARM-driveren til Samsung Galaxy S6, som de blev tildelt en bug-bounty for af Google. Under deres test af Snapdragon Samsung Galaxy S9, GraphicsFuzz fundet en fejl i Adreno 630's grafikdriver, der tillader dem udløse en genstart af hele telefonen via en gyldig WebGL-internetside, når du browser med den almindelige Samsung-internetbrowser.Især er der en fejl i Adreno 630's gengivelse af en kompleks, men gyldig skygge, der kan udnyttes til at få enheden til at fryse og til sidst genstarte. En shader er simpelthen et program, der tillader GPU'en at gengive et billede. GraphicsFuzz designede ikke WebGL-siden med ondsindet hensigt for at udløse denne fejl, og sagde i stedet, at den tilfældigt blev opdaget under deres standardtest af enheders GPU-stabilitet. Da de opdagede, at dette fjernstyrt var reproducerbart, kontaktede virksomheden XDA-udviklere for at lette offentliggørelsesprocessen med både Qualcomm og Samsung.
WebGL Crash Reproduktion på Snapdragon Samsung Galaxy S9
Før vi nåede ud til repræsentanter fra begge virksomheder, validerede vi GraphicsFuzz's resultater på vores egen enhed. GraphicsFuzz oprettet en særlig webside, som vi kan teste imod, og vi valgte de 5 mest populære internetbrowsere i Google Play Butik for at se, hvad der ville ske. Tabellen nedenfor viser virkningerne af at gengive den komplekse skygge på 5 forskellige webbrowsere.
Testet enhed: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)
Operativ system: Android 8.0.0 Oreo SM-G965U
Webbrowser |
Resultat |
---|---|
Google Chrome v65.0.3325.109 |
Fryser kun i ~2 sekunder |
Samsung Internet v7.0.10.46 |
Fryser og udløser til sidst en fuld genstart |
Opera v45.1.2246.125351 |
Fryser telefonen |
Microsoft Edge v1.0.0.1726 |
Fryser kun i ~3 sekunder |
Firefox v59.0.2 |
Browser går ned |
Både Google Chrome og Microsoft Edge vil fryse telefonen i et par sekunder og generere en WebGL-fejl, men enheden vil i sidste ende være i orden. GraphicsFuzz rapporteret til os, at de har været i diskussion med Google Chrome-teamet i nogen tid og har lært at Chrome implementerer en mekanisme, der afslutter GPU-processen efter et bestemt tidsrum for at forhindre en fuld telefon krak. Opera fryser telefonen, men den udløser ikke en genstart. Selve Firefox-appen går ned, men telefonen er fin. Til sidst vil adgang til siden via Samsung Internet få telefonen til at sænke farten til en gennemgang, før den udløser den fulde genstart af telefonen.
Her er en videodemonstration af styrtet:
Detaljeret forklaring af fejlen
GraphicsFuzz udført en mere dybtgående undersøgelse, som indikerer, at problemet, der fik telefonen til at genstarte, er i GPU-driveren til Qualcomm Adreno 630, som er en del af Qualcomm Snapdragon 845 system-på-chip. GraphicsFuzz samlet en log på styrtet, som vi har indlejret nedenfor. For at give en kort oversigt over, hvad der sker, når telefonen gengiver den komplekse skygge, indstiller GPU'en noget, der kaldes et "hegn". Et hegn bruges til at orkestrere adgangen til den delte hukommelse mellem CPU'en og GPU. En mobil GPU har, i modsætning til en desktop, adgang til den samme RAM som CPU'en, så når et spil spilles eller noget andet gengives, bruger den et hegn til at få adgang til den delte hukommelse. På en enhed, der har diskret grafik, har selve GPU'en sin egen hukommelse. Alle nuværende mobiltelefoner deler videohukommelse og random access memory med RAM'ens flashlager. Problemet her er, at hegnet ikke er i stand til at fuldføre, hvilket udløser en kernepanik og får telefonen til at genstarte.
Fuldfør kernepanik før genstart
[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
Læs mere
GraphicsFuzz mener, at årsagen til, at dette problem kun opstår på Samsungs internetbrowser, er GPU-vagthunden. Nogle gange kan en GPU hænge på langvarige shaders, i hvilket tilfælde browseren eller operativsystemet typisk har en GPU-vagthund, der tvinger genstart af en grafikdriver, der ikke reagerer. Det GraphicsFuzz test shader har flere for loops, der kan få det til at tage længere tid at gengive, men det er stadig en gyldig shader. Adskillige andre enheder, inklusive Exynos 9810 Samsung Galaxy S9 med Mali-G72 GPU, formår at gengive denne skygge. Således er holdet kl GraphicsFuzz kom til den konklusion, at denne fejl opstår på grund af en defekt GPU-driver til Adreno 630.
Google Pixel 2 XL med Qualcomm Snapdragon 835's Adreno 540 GPU, der kører den samme version af Samsungs internetbrowser, bliver langsommere til en gennemgang som godt – dette betyder, at denne fejl kan være et problem med Qualcomm GPU-driveren, der renderer skyggen, og Samsung Browser-vagthunden ikke afslutter service.
Forhåbentlig kan Qualcomm diagnosticere det underliggende problem i deres GPU-driver, der forårsager genstart, og snart levere en fast driver til Samsung. Selvfølgelig kan der gå noget tid, før denne opdatering spreder sig til slutbrugere. I mellemtiden forventer vi, at Samsung vil skubbe en opdatering til Samsungs internetbrowser for at afbøde problemet (i det mindste forhindrer det i at blive udnyttet via en webside), der matcher Googles adfærd Chrome. Selvom dette problem er kendt for at påvirke Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, kan det også påvirke flere enheder med Snapdragon 845.
Hvis du er interesseret i at teste GPU-pålideligheden af din egen mobile eller stationære enhed, kan teamet på GraphicsFuzz har sammensat en webapp-demonstration, der giver dig mulighed for at køre nogle af deres gyldige shaders på din enhed. Du kan få adgang til denne webside ved at ved at følge dette link.
Tidslinje for offentliggørelse
- 28. marts 2018: GraphicsFuzz nåede ud til XDA-udviklere informere os om problemet. XDA-udviklere gengivet problemet på vores egen Samsung Galaxy S9+ (SM-G965U).
- 29. marts 2018: GraphicsFuzz nåede ud med flere detaljer og oprettede særlige websider for Qualcomm- og Samsung-medarbejdere for at reproducere fejlen
- 30. marts 2018: XDA-udviklere nåede ud til både Samsung og Qualcomm med alle detaljer om rapporten. Vores Qualcomm-kontakt kontaktede os og bekræftede, at vores besked blev modtaget.
- 2. april 2018: Vores Samsung-kontakt kontaktede os og bekræftede, at vores besked var modtaget.
- 4. april 2018: Vores Samsung-kontakt anbefalede, at vi indgav en anmeldelse hos Samsung Sikkerhedsrapportering side. XDA-udviklere indgav en rapport, og en Samsung-ingeniør blev tildelt rapporten.