Snapdragon Samsung Galaxy S9 ima napako stabilnosti GPE, ki jo je mogoče izkoristiti za sprožitev oddaljenih ponovnih zagonov

Samsung Galaxy S9 in Galaxy S9+ sta bila predstavljena na več trgih, vključno z ZDA, Hong Kongom in deli Latinske Amerike s sistemom Qualcomm Snapdragon 845 na čipu. Britansko podjetje GraphicsFuzz je odkrilo napako stabilnosti GPU, ki jo je mogoče izkoristiti za sprožitev oddaljenih ponovnih zagonov/zrušitev telefona.

Novi Samsung Galaxy S9 vključuje najnovejši sistem Qualcomm Snapdragon 845 na čipu za več trgov, vključno s Hongkongom, Združenimi državami Amerike, Kanado in deli Latinske Amerike. Samsung je na nekaterih trgih pogosto izbral najnovejši vodilni SoC Qualcomm Snapdragon namesto svojega lastnega SoC Exynos. To običajno velja za Združene države Amerike, z izjemo Samsung Galaxy S6. Za povprečnega potrošnika je razlika med različicama Exynos 9810 in Snapdragon 845 majhna. Pod pokrovom pa lahko razlika v naborih čipov vodi do zelo različnih izkušenj.

AnandtechPregled Snapdragon Galaxy S9 in Exynos Galaxy S9 je razkril velike razlike v zmogljivosti in življenjsko dobo baterije med obema modeloma, pri čemer je model Snapdragon zlahka boljši od modela Exynos. S tema dvema zelo različnima naboroma čipov se zdi, da razlika v zmogljivosti tokrat ni edina skrb, glede na podjetje s sedežem v Združenem kraljestvu, imenovano 

GraphicsFuzz. GraphicsFuzz je novoustanovljeno podjetje, specializirano za testiranje zanesljivosti GPE na napravah. Razvijajo teste za iskanje napak v grafičnih gonilnikih in nudijo pomoč pri diagnosticiranju temeljnih vzrokov kakršnih koli težav, ki jih odkrijejo. Ekipa je na primer odkrila varnostno težavo vpliva na gonilnik ARM za Samsung Galaxy S6, za kar jim je Google podelil nagrado za hrošče. Med njihovim testiranjem Snapdragon Samsung Galaxy S9, GraphicsFuzz našli napako v grafičnem gonilniku Adreno 630, ki jim omogoča sproži ponovni zagon celotnega telefona prek veljavne internetne strani WebGL, ko brskate z osnovnim internetnim brskalnikom Samsung.

Zlasti obstaja napaka pri upodabljanju zapletenega, a veljavnega senčila Adreno 630, ki ga je mogoče izkoristiti, da naprava zamrzne in se na koncu znova zažene. Shader je preprosto program, ki GPU omogoča upodabljanje slike. GraphicsFuzz ni zasnoval strani WebGL z zlonamernim namenom, da bi sprožil to napako, in namesto tega pravi, da je bila po naključju odkrita med njihovim standardnim testiranjem stabilnosti GPU naprav. Ko so odkrili, da je to zrušitev na daljavo ponovljivo, se je podjetje obrnilo nanj XDA-razvijalci za olajšanje postopka razkritja pri Qualcommu in Samsungu.

Reprodukcija zrušitve WebGL na Snapdragon Samsung Galaxy S9

Preden smo stopili v stik s predstavniki obeh podjetij, smo potrdili GraphicsFuzzugotovitve na lastni napravi. GraphicsFuzz postavili posebno spletno stran, na kateri smo testirali, in izbrali smo 5 najbolj priljubljenih internetnih brskalnikov v trgovini Google Play, da vidimo, kaj se bo zgodilo. Spodnja tabela prikazuje učinke upodabljanja kompleksnega senčila v 5 različnih spletnih brskalnikih.

Preizkušena naprava: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

Operacijski sistem: Android 8.0.0 Oreo SM-G965U

Spletni brskalnik

Rezultat

Google Chrome v65.0.3325.109

Zamrzne samo za ~2 sekundi

Samsung Internet v7.0.10.46

Zamrzne in sčasoma sproži popoln ponovni zagon

Opera v45.1.2246.125351

Zamrzne telefon

Microsoft Edge v1.0.0.1726

Zamrzne samo za ~3 sekunde

Firefox v59.0.2

Brskalnik se zruši

Google Chrome in Microsoft Edge bosta za nekaj sekund zamrznila telefon in ustvarila napako WebGL, vendar bo naprava na koncu v redu. GraphicsFuzz so nam sporočili, da že nekaj časa razpravljajo z ekipo za Google Chrome in so se naučili da Chrome implementira mehanizem, ki konča proces GPE po določenem času, da prepreči poln telefon strmoglavljenje. Opera zamrzne telefon, vendar ne sproži ponovnega zagona. Sama aplikacija Firefox se zruši, vendar je telefon v redu. Nazadnje, dostopanje do strani prek interneta Samsung povzroči, da se telefon upočasni do plazenja, preden sproži popolni ponovni zagon telefona.

Tukaj je video predstavitev nesreče:

Podrobna razlaga napake

GraphicsFuzz izvedel bolj poglobljeno preiskavo, ki kaže, da je težava, zaradi katere se telefon znova zažene v gonilniku GPU za Qualcomm Adreno 630, ki je del Qualcomm Snapdragon 845 sistem na čipu. GraphicsFuzz zbrali dnevnik o zrušitvi, ki smo ga vdelali spodaj. Če na kratko povzamem, kaj se dogaja, ko telefon upodablja zapleteno senčilo, GPE nastavi nekaj, kar se imenuje "ograja". Ograja se uporablja za orkestriranje dostopa do skupnega pomnilnika med CPU in GPU. Mobilna grafična procesorska enota ima za razliko od namizja dostop do istega pomnilnika RAM kot centralna procesorska enota, tako da, ko se igra igra ali upodablja kaj drugega, uporablja ograjo za dostop do tega skupnega pomnilnika. V napravi z ločeno grafiko ima sam GPE svoj pomnilnik. Vsi trenutni mobilni telefoni si delijo video pomnilnik in pomnilnik z naključnim dostopom z bliskovnim pomnilnikom RAM. Težava tukaj je, da ograja ne more dokončati, kar sproži paniko jedra in povzroči ponovni zagon telefona.

Popolna panika jedra pred ponovnim zagonom

[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

Preberi več

GraphicsFuzz meni, da je razlog, da se ta težava pojavlja samo v internetnem brskalniku Samsung, nadzor GPU. Včasih lahko grafična procesorska enota visi na dolgo delujočih senčnikih; v tem primeru ima brskalnik ali operacijski sistem navadno nadzornega psa GPU, ki prisilno znova zažene neodzivni grafični gonilnik. The GraphicsFuzz testni senčnik ima več for zank, zaradi katerih upodabljanje lahko traja dlje, vendar je še vedno veljaven senčnik. Več drugih naprav, vključno z Exynos 9810 Samsung Galaxy S9 z grafičnim procesorjem Mali-G72, uspe upodobiti ta senčnik. Tako je ekipa pri GraphicsFuzz prišel do zaključka, da se ta napaka dogaja zaradi napačnega gonilnika GPE za Adreno 630.

Google Pixel 2 XL z grafičnim procesorjem Adreno 540 Qualcomm Snapdragon 835, ki poganja isto različico internetnega brskalnika Samsung, se upočasni do plazenja kot dobro – to pomeni, da je ta napaka lahko težava z gonilnikom Qualcomm GPE, ki upodablja senčnik, in nadzorom brskalnika Samsung, ki ne konča storitev.

Upajmo, da bo Qualcomm lahko diagnosticiral osnovno težavo v gonilniku GPE, ki povzroča ponovni zagon, in Samsungu kmalu zagotovil popravljen gonilnik. Seveda lahko traja nekaj časa, preden se ta posodobitev razširi na končne uporabnike. Medtem pričakujemo, da bo Samsung posodobil spletni brskalnik Samsung za ublažitev težavo (vsaj preprečevanje izkoriščanja prek spletne strani), ki se ujema z vedenjem Googla Chrome. Čeprav je znano, da ta težava vpliva na Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, lahko vpliva tudi na več naprav s Snapdragonom 845.

Če vas zanima preizkušanje zanesljivosti GPU vaše mobilne ali namizne naprave, ekipa na GraphicsFuzz je sestavil predstavitev spletne aplikacije, ki vam omogoča zagon nekaterih njihovih veljavnih senčil v vaši napravi. Do te spletne strani lahko dostopate tako po tej povezavi.

Časovnica razkritja

  • 28. marec 2018: GraphicsFuzz dosegel XDA-razvijalci nas obvešča o težavi. XDA-razvijalci poustvarili težavo na lastnem Samsung Galaxy S9+ (SM-G965U).
  • 29. marec 2018: GraphicsFuzz dosegel več podrobnosti in vzpostavil posebne spletne strani za zaposlene v Qualcommu in Samsungu za reprodukcijo hrošča
  • 30. marec 2018: XDA-razvijalci se je obrnilo na Samsung in Qualcomm z vsemi podrobnostmi o poročilu. Naš kontakt pri Qualcommu se je vrnil k nam in potrdil, da je naše sporočilo prejelo.
  • 2. april 2018: Naš Samsungov kontakt nas je kontaktiral in nam potrdil, da je naše sporočilo prejelo.
  • 4. april 2018: Naš stik za Samsung je priporočil, da prijavimo pri Samsungu Varnostno poročanje strani. XDA-razvijalci vložil poročilo in za poročilo je bil dodeljen Samsungov inženir.