Snapdragon Samsung Galaxy S9 are un bug de stabilitate a GPU-ului care poate fi exploatat pentru a declanșa reporniri de la distanță

click fraud protection

Samsung Galaxy S9 și Galaxy S9+ au fost lansate pe mai multe piețe, inclusiv în SUA, Hong Kong și părți din America Latină, cu sistemul pe cip Qualcomm Snapdragon 845. Firma britanică GraphicsFuzz a descoperit o eroare de stabilitate a GPU-ului care poate fi exploatată pentru a declanșa reporniri/crashuri ale telefonului de la distanță.

Noul Samsung Galaxy S9 include cel mai recent sistem pe cip Qualcomm Snapdragon 845 pentru mai multe piețe, inclusiv Hong Kong, Statele Unite, Canada și părți din America Latină. Samsung a ales adesea cel mai recent SoC emblematic Qualcomm Snapdragon în detrimentul SoC Exynos propriu în unele piețe. Acesta este de obicei cazul în Statele Unite, cu excepția Samsung Galaxy S6. Pentru consumatorul mediu, există o mică diferență între variantele Exynos 9810 și Snapdragon 845. Cu toate acestea, sub capotă, diferența dintre chipset-uri poate duce la experiențe extrem de diferite.

AnandtechRevizuirea lui Snapdragon Galaxy S9 și Exynos Galaxy S9 a dezvăluit diferențe mari de performanță și durata de viață a bateriei între cele două modele, modelul Snapdragon depășind cu ușurință modelul Exynos. Cu aceste două chipset-uri foarte diferite, o diferență de performanță nu pare să fie singura preocupare de data aceasta, potrivit unei companii cu sediul în Marea Britanie numită 

GraphicsFuzz. GraphicsFuzz este o firmă start-up specializată în testarea fiabilității GPU-urilor pe dispozitive. Ei dezvoltă teste pentru a căuta erori în driverele grafice și oferă ajutor în diagnosticarea cauzelor principale ale oricăror probleme pe care le descoperă. De exemplu, echipa a descoperit o problemă de securitate care afectează driverul ARM pentru Samsung Galaxy S6, pentru care au primit o recompensă pentru erori de la Google. În timpul testării Snapdragon Samsung Galaxy S9, GraphicsFuzz a găsit o eroare în driverul grafic al Adreno 630 care le permite declanșează o repornire a întregului telefon printr-o pagină de Internet WebGL validă atunci când navigați cu browserul de internet Samsung.

În special, există o eroare în redarea de către Adreno 630 a unui shader complex, dar valid, care poate fi exploatat pentru a face ca dispozitivul să înghețe și, în cele din urmă, să se repornească. Un shader este pur și simplu un program care permite GPU-ului să redea o imagine. GraphicsFuzz nu a proiectat pagina WebGL cu intenție rău intenționată de a declanșa acest bug și, în schimb, a spus că a fost descoperit întâmplător în timpul testării standard a stabilității GPU a dispozitivelor. Odată ce au descoperit că acest accident de la distanță este reproductibil, compania a contactat XDA-Developers pentru a facilita procesul de dezvăluire atât cu Qualcomm, cât și cu Samsung.

Reproducerea accidentului WebGL pe Snapdragon Samsung Galaxy S9

Înainte de a lua legătura cu reprezentanții fiecărei companii, am validat GraphicsFuzzdescoperirile lui pe propriul nostru dispozitiv. GraphicsFuzz a creat o pagină web specială pe care să o testăm și am ales cele mai populare 5 browsere de internet din Magazinul Google Play pentru a vedea ce s-ar întâmpla. Tabelul de mai jos arată efectele redării shaderului complex pe 5 browsere web diferite.

Dispozitiv testat: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)

Sistem de operare: Android 8.0.0 Oreo SM-G965U

Browser web

Rezultat

Google Chrome v65.0.3325.109

Îngheață numai pentru ~2 secunde

Samsung Internet v7.0.10.46

Îngheață, apoi declanșează în cele din urmă o repornire completă

Opera v45.1.2246.125351

Îngheață telefonul

Microsoft Edge v1.0.0.1726

Îngheață numai pentru ~3 secunde

Firefox v59.0.2

Browserul se blochează

Atât Google Chrome, cât și Microsoft Edge vor îngheța telefonul pentru câteva secunde și vor genera o eroare WebGL, dar dispozitivul va fi în cele din urmă bine. GraphicsFuzz ne-au raportat că au discutat cu echipa Google Chrome de ceva timp și au aflat că Chrome implementează un mecanism care încheie procesul GPU după o perioadă de timp stabilită pentru a preveni un telefon complet prăbușire. Opera îngheață telefonul, dar nu declanșează o repornire. Aplicația Firefox în sine se blochează, dar telefonul este bine. În cele din urmă, accesarea paginii prin Samsung Internet face ca telefonul să încetinească până la un crawl înainte de a declanșa repornirea completă a telefonului.

Iată o demonstrație video a prăbușirii:

Explicația detaliată a erorii

GraphicsFuzz a efectuat o investigație mai aprofundată care indică faptul că problema care a cauzat repornirea telefonului este în driverul GPU pentru Qualcomm Adreno 630 care face parte din Qualcomm Snapdragon 845 sistem pe cip. GraphicsFuzz am colectat un jurnal despre accident, pe care l-am încorporat mai jos. Pentru a oferi un scurt rezumat a ceea ce se întâmplă, atunci când telefonul redă shaderul complex, GPU-ul se setează ceva numit „gard”. Un gard este folosit pentru a orchestra accesul la memoria partajată între CPU și GPU. Un GPU mobil, spre deosebire de un desktop, are acces la aceeași memorie RAM ca și CPU, așa că atunci când se joacă un joc sau se redă altceva, folosește un gard pentru a accesa acea memorie partajată. Pe un dispozitiv care are grafică discretă, GPU-ul în sine are propria sa memorie. Toate telefoanele mobile actuale partajează memorie video și memorie cu acces aleatoriu cu stocarea flash a RAM. Problema aici este că gardul nu se poate finaliza, ceea ce declanșează o panică a nucleului și determină repornirea telefonului.

Completați panica kernelului înainte de repornire

[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

citeşte mai mult

GraphicsFuzz consideră că motivul pentru care această problemă se întâmplă doar pe browserul de internet Samsung este cel al supraveghetorului GPU. Uneori, un GPU se poate bloca pe shadere cu funcționare lungă, caz în care browserul sau sistemul de operare are de obicei un watchdog GPU care forțează repornirea unui driver grafic care nu răspunde. The GraphicsFuzz test shader are mai multe bucle for care ar putea dura mai mult randarea, dar este totuși un shader valid. Câteva alte dispozitive, inclusiv Exynos 9810 Samsung Galaxy S9 cu GPU Mali-G72, reușesc să redea acest shader. Astfel, echipa de la GraphicsFuzz a ajuns la concluzia că această eroare se întâmplă din cauza unui driver GPU defect pentru Adreno 630.

Google Pixel 2 XL cu GPU-ul Adreno 540 de la Qualcomm Snapdragon 835 care rulează aceeași versiune a browserului de internet Samsung încetinește la crawlere pe măsură ce Ei bine, aceasta înseamnă că această eroare ar putea fi o problemă cu driverul GPU Qualcomm care redă shader-ul și că sistemul de supraveghere al browserului Samsung nu încheie serviciu.

Sperăm că Qualcomm poate diagnostica problema care stau la baza driverului GPU-ului care provoacă repornirea și poate oferi Samsung în curând un driver fix. Desigur, ar putea trece ceva timp până când această actualizare se propagă la utilizatorii finali. Între timp, ne așteptăm ca Samsung să introducă o actualizare a browserului web Samsung pentru a atenua problema (cel puțin împiedicând exploatarea acesteia prin intermediul unei pagini web), potrivirea comportamentului Google Crom. Deși se știe că această problemă afectează Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, ar putea afecta și mai multe dispozitive cu Snapdragon 845.

Dacă sunteți interesat să testați fiabilitatea GPU-ului propriului dispozitiv mobil sau desktop, echipa de la GraphicsFuzz a creat o demonstrație a aplicației web care vă permite să rulați unele dintre aplicațiile de nuanță valide pe dispozitivul dvs. Puteți accesa acea pagină web prin urmând acest link.

Cronologia dezvăluirii

  • 28 martie 2018: GraphicsFuzz a întins mâna către XDA-Developers informându-ne despre problemă. XDA-Developers am reprodus problema pe propriul nostru Samsung Galaxy S9+ (SM-G965U).
  • 29 martie 2018: GraphicsFuzz a contactat cu mai multe detalii și a creat pagini web speciale pentru angajații Qualcomm și Samsung pentru a reproduce eroarea
  • 30 martie 2018: XDA-Developers a contactat atât Samsung, cât și Qualcomm cu detalii complete despre raport. Contactul nostru Qualcomm ne-a contactat confirmând că mesajul nostru a fost primit.
  • 2 aprilie 2018: Contactul nostru Samsung ne-a contactat confirmând că mesajul nostru a fost primit.
  • 4 aprilie 2018: Contactul nostru Samsung a recomandat să depunem un raport la Samsung Raportare de securitate pagină. XDA-Developers a depus un raport și un inginer Samsung a fost desemnat pentru raport.