Snapdragon Samsung Galaxy S9:ssä on GPU-vakausvirhe, jota voidaan hyödyntää käynnistämään etäkäynnistykset

click fraud protection

Samsung Galaxy S9 ja Galaxy S9+ julkaistiin useilla markkinoilla, mukaan lukien Yhdysvalloissa, Hongkongissa ja osissa Latinalaista Amerikkaa Qualcomm Snapdragon 845 -järjestelmäpiirillä. Yhdistyneessä kuningaskunnassa toimiva GraphicsFuzz löysi grafiikkasuorittimen vakausvirheen, jota voidaan hyödyntää käynnistämään etäpuhelimen uudelleenkäynnistykset/kaatumiset.

Uusi Samsung Galaxy S9 sisältää uusimman Qualcomm Snapdragon 845 -järjestelmäpiirin useille markkinoille, mukaan lukien Hong Kong, Yhdysvallat, Kanada ja osa Latinalaista Amerikkaa. Samsung on usein valinnut uusimman lippulaivan Qualcomm Snapdragon SoC: n oman Exynos SoC: n sijaan joillakin markkinoilla. Näin on yleensä Yhdysvalloissa, Samsung Galaxy S6:ta lukuun ottamatta. Keskivertokuluttajalle Exynos 9810- ja Snapdragon 845 -versioiden välillä on vain vähän eroa. Hupun alla erot piirisarjoissa voivat kuitenkin johtaa hurjasti erilaisiin kokemuksiin.

AnandtechArvostelu Snapdragon Galaxy S9:stä ja Exynos Galaxy S9:stä paljasti jyrkät erot suorituskyvyssä ja akun kesto näiden kahden mallin välillä, sillä Snapdragon-malli ylittää helposti Exynos-mallin. Näillä kahdella hyvin erilaisella piirisarjalla ero suorituskyvyssä ei näytä olevan ainoa huolenaihe tällä kertaa, Yhdistyneessä kuningaskunnassa toimivan yrityksen mukaan 

GraphicsFuzz. GraphicsFuzz on start-up-yritys, joka on erikoistunut GPU-luotettavuuden testaamiseen laitteissa. He kehittävät testejä näytönohjainten vikojen etsimiseksi ja tarjoavat apua löytämiensä ongelmien perimmäisten syiden diagnosoinnissa. Esimerkiksi tiimi havaitsi tietoturvaongelman vaikuttaa Samsung Galaxy S6:n ARM-ohjaimeen, josta Google myönsi virhepalkkion. Snapdragon Samsung Galaxy S9:n testauksen aikana GraphicsFuzz löysi Adreno 630:n grafiikkaohjaimesta virheen, joka mahdollistaa sen käynnistää koko puhelimen uudelleenkäynnistyksen kelvollisen WebGL-Internet-sivun kautta, kun selaat Samsungin varastossa olevaa Internet-selainta.

Erityisesti Adreno 630:n hahmontamisessa monimutkaisesta mutta pätevästä varjostimesta on virhe, jota voidaan käyttää hyväksi laitteen jumiutumiseen ja lopulta uudelleenkäynnistykseen. Shader on yksinkertaisesti ohjelma, jonka avulla GPU hahmontaa kuvan. GraphicsFuzz eivät suunnitelleet WebGL-sivua pahantahtoisella tarkoituksella käynnistääkseen tämän virheen, ja sen sijaan sanoivat, että se havaittiin sattumalta laitteiden GPU-vakauden vakiotestauksessa. Kun he huomasivat, että tämä etäonnettomuus oli toistettavissa, yritys otti yhteyttä XDA-kehittäjät helpottaa paljastamisprosessia sekä Qualcommin että Samsungin kanssa.

WebGL Crash Reproduction Snapdragon Samsung Galaxy S9:ssä

Ennen kuin otimme yhteyttä kummankaan yrityksen edustajiin, vahvistimme GraphicsFuzzhavainnot omalla laitteellamme. GraphicsFuzz perustimme meille erityisen verkkosivun testattavaksi, ja valitsimme 5 suosituinta Internet-selainta Google Play -kaupasta nähdäksemme, mitä tapahtuisi. Alla oleva taulukko näyttää monimutkaisen varjostimen hahmontamisen vaikutukset viidellä eri verkkoselaimella.

Laite testattu: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

Käyttöjärjestelmä: Android 8.0.0 Oreo SM-G965U

Nettiselain

Tulos

Google Chrome v65.0.3325.109

Jäätyy vain ~2 sekunniksi

Samsung Internet v7.0.10.46

Jäätyy sitten lopulta käynnistää täyden uudelleenkäynnistyksen

Opera v45.1.2246.125351

Jäätyy puhelin

Microsoft Edge v1.0.0.1726

Jäätyy vain ~3 sekuntia

Firefox v59.0.2

Selain kaatuu

Sekä Google Chrome että Microsoft Edge jäädyttävät puhelimen muutamaksi sekunniksi ja luovat WebGL-virheen, mutta laite on lopulta kunnossa. GraphicsFuzz ilmoitti meille, että he ovat keskustelleet Google Chrome -tiimin kanssa jonkin aikaa ja ovat oppineet että Chrome toteuttaa mekanismin, joka lopettaa GPU-prosessin tietyn ajan kuluttua estääkseen puhelimen täyttymisen kaatua. Opera jäädyttää puhelimen, mutta se ei käynnistä uudelleenkäynnistystä. Itse Firefox-sovellus kaatuu, mutta puhelin on kunnossa. Lopuksi sivulle pääseminen Samsung Internetin kautta saa puhelimen hidastamaan indeksointia ennen puhelimen täyden uudelleenkäynnistyksen käynnistämistä.

Tässä videoesittely onnettomuudesta:

Virheen yksityiskohtainen selitys

GraphicsFuzz suoritti perusteellisemman tutkimuksen, joka osoittaa, että ongelma, joka aiheuttaa puhelimen uudelleenkäynnistyksen, on Qualcomm Adreno 630:n GPU-ohjaimessa, joka on osa Qualcomm Snapdragon 845:tä järjestelmä sirulla. GraphicsFuzz keräsimme kaatumisesta lokin, jonka olemme upottaneet alle. GPU asettaa lyhyen yhteenvedon siitä, mitä tapahtuu, kun puhelin tekee monimutkaisen varjostimen jotain, jota kutsutaan "aidaksi". Aitaa käytetään ohjaamaan pääsy jaettuun muistiin suorittimen välillä ja GPU. Mobiiligrafiikkasuorittimella, toisin kuin pöytäkoneella, on pääsy samaan RAM-muistiin kuin suorittimella, joten kun peliä pelataan tai jotain muuta renderöidään, se käyttää aitaa päästäkseen jaettuun muistiin. Laitteessa, jossa on erillinen grafiikka, itse GPU: lla on oma muisti. Kaikki nykyiset matkapuhelimet jakavat videomuistin ja käyttömuistin RAM-muistin flash-tallennustilan kanssa. Ongelmana tässä on, että aita ei pysty suorittamaan loppuun, mikä laukaisee ytimen paniikin ja aiheuttaa puhelimen uudelleenkäynnistyksen.

Suorita ytimen paniikki loppuun ennen uudelleenkäynnistystä

[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

Lue lisää

GraphicsFuzz uskoo, että syy tähän ongelmaan vain Samsungin Internet-selaimessa on GPU-vahtikoiran syy. Joskus grafiikkasuoritin voi roikkua pitkään käynnissä olevissa shadereissä, jolloin selaimessa tai käyttöjärjestelmässä on yleensä GPU-vahti, joka pakottaa uudelleen reagoimattoman näytönohjaimen. The GraphicsFuzz testivarjostimessa on useita for-silmukoita, joiden hahmontaminen voi kestää kauemmin, mutta se on silti kelvollinen varjostin. Useat muut laitteet, mukaan lukien Exynos 9810 Samsung Galaxy S9 Mali-G72 GPU: lla, onnistuvat renderöimään tämän varjostimen. Näin ollen joukkue klo GraphicsFuzz tuli siihen tulokseen, että tämä virhe johtuu Adreno 630:n viallisesta GPU-ohjaimesta.

Google Pixel 2 XL, jossa on Qualcomm Snapdragon 835:n Adreno 540 GPU ja joka käyttää samaa Samsungin Internet-selaimen versiota, hidastaa indeksointia No, tämä tarkoittaa, että tämä virhe saattaa johtua siitä, että Qualcomm GPU -ohjain tekee varjostimen ja Samsung Browser watchdog ei lopeta palvelua.

Toivottavasti Qualcomm voi diagnosoida taustalla olevan ongelman GPU-ohjaimessa, joka aiheuttaa uudelleenkäynnistyksen, ja toimittaa Samsungille pian kiinteän ohjaimen. Tietenkin voi kestää jonkin aikaa, ennen kuin tämä päivitys leviää loppukäyttäjille. Tällä välin odotamme, että Samsung päivittää Samsungin Internet-selaimeen lieventämään tilannetta ongelma (ainakin estää sen hyödyntäminen verkkosivun kautta), joka vastaa Googlen toimintaa Kromi. Vaikka tämän ongelman tiedetään vaikuttavan Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+ -puhelimeen, se voi vaikuttaa myös useisiin laitteisiin, joissa on Snapdragon 845.

Jos olet kiinnostunut testaamaan oman mobiili- tai työpöytälaitteesi GPU-luotettavuutta, tiimi at GraphicsFuzz on koonnut webapp-esittelyn, jonka avulla voit ajaa joitain niiden kelvollisista varjostimista laitteellasi. Pääset tälle verkkosivulle käyttämällä tämän linkin jälkeen.

Ilmoituksen aikajana

  • 28. maaliskuuta 2018: GraphicsFuzz tavoitti XDA-kehittäjät tiedottaa meille asiasta. XDA-kehittäjät toisti ongelman omalla Samsung Galaxy S9+:llamme (SM-G965U).
  • 29. maaliskuuta 2018: GraphicsFuzz otti yhteyttä saadakseen lisätietoja ja perusti erityiset verkkosivut Qualcommin ja Samsungin työntekijöille vian toistamiseksi
  • 30. maaliskuuta 2018: XDA-kehittäjät otti yhteyttä sekä Samsungiin että Qualcommiin saadakseen raportin kaikki tiedot. Qualcommin yhteyshenkilömme otti meihin yhteyttä ja vahvisti, että viestimme on vastaanotettu.
  • 2. huhtikuuta 2018: Samsung-yhteyshenkilömme otti meihin yhteyttä ja vahvisti, että viestimme on vastaanotettu.
  • 4. huhtikuuta 2018: Samsungin yhteyshenkilömme suositteli, että teemme ilmoituksen Samsungille Turvallisuusraportointi sivu. XDA-kehittäjät teki raportin, ja Samsungin insinööri määrättiin raporttiin.