Samsungi Galaxy S9 i Galaxy S9+ zostały wprowadzone na kilka rynków, w tym w USA, Hongkongu i niektórych częściach Ameryki Łacińskiej, z procesorem Qualcomm Snapdragon 845 typu system-on-chip. Brytyjska firma GraphicsFuzz odkryła błąd związany ze stabilnością procesora graficznego, który można wykorzystać do zdalnego uruchomienia/awarii telefonu.
Nowa Samsunga Galaxy S9 obejmuje najnowszy system-on-chip Qualcomm Snapdragon 845 dla kilku rynków, w tym Hongkongu, Stanów Zjednoczonych, Kanady i części Ameryki Łacińskiej. Na niektórych rynkach Samsung często wybierał najnowszy flagowy SoC Qualcomm Snapdragon zamiast wewnętrznego SoC Exynos. Zwykle dzieje się tak w Stanach Zjednoczonych, z wyjątkiem Samsunga Galaxy S6. Dla przeciętnego konsumenta różnica między wariantami Exynos 9810 i Snapdragon 845 jest niewielka. Jednak pod maską różnica w chipsetach może prowadzić do zupełnie odmiennych doświadczeń.
AnandtechRecenzja Snapdragon Galaxy S9 i Exynos Galaxy S9 ujawniła wyraźne różnice w wydajności i żywotność baterii pomiędzy obydwoma modelami, przy czym model Snapdragon z łatwością przewyższa model Exynos. Według brytyjskiej firmy o nazwie
GrafikaFuzz. GrafikaFuzz to start-up specjalizujący się w testowaniu niezawodności GPU na urządzeniach. Opracowują testy szukające błędów w sterownikach graficznych i oferują pomoc w diagnozowaniu głównych przyczyn wszelkich wykrytych problemów. Na przykład zespół odkrył problem z bezpieczeństwem wpływające na sterownik ARM dla Samsunga Galaxy S6, za co otrzymali od Google nagrodę za błędy. Podczas testów Snapdragona Samsunga Galaxy S9, GrafikaFuzz znaleźli błąd w sterowniku graficznym Adreno 630, który im na to pozwala wywołać ponowne uruchomienie całego telefonu za pośrednictwem prawidłowej strony internetowej WebGL podczas przeglądania za pomocą standardowej przeglądarki internetowej Samsung.W szczególności występuje błąd w renderowaniu przez Adreno 630 złożonego, ale prawidłowego modułu cieniującego, który można wykorzystać do zawieszenia urządzenia, a następnie ponownego uruchomienia. Moduł cieniujący to po prostu program, który umożliwia procesorowi graficznemu renderowanie obrazu. GrafikaFuzz nie zaprojektował strony WebGL ze złośliwym zamiarem wywołania tego błędu, a zamiast tego twierdzi, że został on przypadkowo wykryty podczas standardowych testów stabilności GPU urządzeń. Gdy odkryli, że ta zdalna awaria jest powtarzalna, firma skontaktowała się z nami Programiści XDA aby ułatwić proces ujawniania informacji zarówno Qualcommowi, jak i Samsungowi.
Odtwarzanie awarii WebGL na Snapdragonie Samsung Galaxy S9
Zanim skontaktowaliśmy się z przedstawicielami którejkolwiek z firm, dokonaliśmy weryfikacji GrafikaFuzzustalenia na naszym własnym urządzeniu. GrafikaFuzz utworzyliśmy dla nas specjalną stronę internetową do testów i wybraliśmy 5 najpopularniejszych przeglądarek internetowych w sklepie Google Play, aby zobaczyć, co się stanie. Poniższa tabela przedstawia efekty renderowania złożonego modułu cieniującego w 5 różnych przeglądarkach internetowych.
Testowane urządzenie: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)
System operacyjny: Androida 8.0.0 Oreo SM-G965U
Przeglądarka internetowa |
Wynik |
---|---|
Google Chrome v65.0.3325.109 |
Zawiesza się tylko na ~2 sekundy |
Internet Samsunga v7.0.10.46 |
Zawiesza się, a następnie ostatecznie powoduje pełne ponowne uruchomienie |
Opera v45.1.2246.125351 |
Zamraża telefon |
Microsoft Edge v1.0.0.1726 |
Zawiesza się tylko na ~3 sekundy |
Firefox v59.0.2 |
Przeglądarka ulega awarii |
Zarówno Google Chrome, jak i Microsoft Edge zawieszą telefon na kilka sekund i wygenerują błąd WebGL, ale ostatecznie urządzenie będzie działać dobrze. GrafikaFuzz zgłosili nam, że od jakiegoś czasu rozmawiają z zespołem Google Chrome i wynieśli pewne wnioski że Chrome implementuje mechanizm, który kończy proces GPU po określonym czasie, aby zapobiec zapełnieniu telefonu rozbić się. Opera zawiesza telefon, ale nie powoduje ponownego uruchomienia. Sama aplikacja Firefox ulega awarii, ale z telefonem wszystko jest w porządku. Wreszcie, dostęp do strony za pośrednictwem Internetu Samsung powoduje spowolnienie telefonu do pełnego uruchomienia przed uruchomieniem pełnego ponownego uruchomienia telefonu.
Oto wideo demonstracyjne katastrofy:
Szczegółowe wyjaśnienie błędu
GrafikaFuzz przeprowadził bardziej szczegółowe badanie, które wykazało, że przyczyną ponownego uruchomienia telefonu jest problem w sterowniku GPU dla Qualcomm Adreno 630, który jest częścią Qualcomm Snapdragon 845 system na chipie. GrafikaFuzz zebraliśmy dziennik awarii, który zamieściliśmy poniżej. Aby dać krótkie podsumowanie tego, co się dzieje, gdy telefon renderuje złożony moduł cieniujący, procesor graficzny się ustawia coś, co nazywa się „ogrodzeniem”. Ogrodzenie służy do organizowania dostępu do pamięci współdzielonej pomiędzy procesorami i GPU. Mobilny procesor graficzny, w przeciwieństwie do komputera stacjonarnego, ma dostęp do tej samej pamięci RAM co procesor, więc gdy grasz w grę lub renderujesz coś innego, korzysta z bariery, aby uzyskać dostęp do pamięci współdzielonej. W urządzeniu wyposażonym w oddzielną grafikę sam procesor graficzny ma własną pamięć. Wszystkie obecne telefony komórkowe współdzielą pamięć wideo i pamięć o dostępie swobodnym z pamięcią flash RAM. Problem polega na tym, że ogrodzenie nie jest w stanie ukończyć, co powoduje panikę jądra i powoduje ponowne uruchomienie telefonu.
Kompletna panika jądra przed ponownym uruchomieniem
[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
Czytaj więcej
GrafikaFuzz uważa, że przyczyną tego problemu jest tylko przeglądarka internetowa Samsung, związana z funkcją watchdoga GPU. Czasami procesor graficzny może zawieszać się na długotrwałych modułach cieniujących, w takim przypadku przeglądarka lub system operacyjny zazwyczaj ma funkcję watchdog GPU, która wymusza ponowne uruchomienie niereagującego sterownika graficznego. The GrafikaFuzz testowy moduł cieniujący ma kilka pętli for, które mogą wydłużyć renderowanie, ale nadal jest to prawidłowy moduł cieniujący. Kilka innych urządzeń, w tym Exynos 9810 Samsung Galaxy S9 z procesorem graficznym Mali-G72, potrafi renderować ten moduł cieniujący. Tym samym zespół o godz GrafikaFuzz doszedłem do wniosku, że ten błąd występuje z powodu wadliwego sterownika GPU dla Adreno 630.
Google Pixel 2 XL z procesorem graficznym Adreno 540 Qualcomm Snapdragon 835 i tą samą wersją przeglądarki internetowej Samsung spowalnia w miarę cóż — oznacza to, że ten błąd może wynikać z problemu ze sterownikiem GPU Qualcomm renderującym moduł cieniujący i funkcją watchdog przeglądarki Samsung, która nie kończy działania praca.
Mamy nadzieję, że Qualcomm zdiagnozuje podstawowy problem w sterowniku karty graficznej, który powoduje ponowne uruchomienie, i wkrótce udostępni Samsungowi naprawiony sterownik. Oczywiście może minąć trochę czasu, zanim aktualizacja zostanie rozpowszechniona wśród użytkowników końcowych. W międzyczasie spodziewamy się, że firma Samsung przekaże aktualizację przeglądarki internetowej Samsung w celu złagodzenia skutków tego problemu problem (przynajmniej uniemożliwiający wykorzystanie go za pośrednictwem strony internetowej), pasujący do zachowania Google Chrom. Chociaż wiadomo, że ten problem dotyczy Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, może również dotyczyć większej liczby urządzeń wyposażonych w Snapdragon 845.
Jeśli chcesz przetestować niezawodność procesora graficznego na swoim urządzeniu mobilnym lub stacjonarnym, zespół pod adresem GrafikaFuzz przygotował demonstrację aplikacji internetowej, która umożliwia uruchomienie niektórych prawidłowych shaderów na Twoim urządzeniu. Dostęp do tej strony internetowej można uzyskać poprzez podążając za tym linkiem.
Harmonogram ujawnień
- 28 marca 2018 r: GrafikaFuzz sięgnął do Programiści XDA informując nas o problemie. Programiści XDA odtworzyliśmy problem na naszym własnym Samsungu Galaxy S9 + (SM-G965U).
- 29 marca 2018 r: GrafikaFuzz skontaktował się z nami, przekazując więcej szczegółów i utworzył specjalne strony internetowe dla pracowników Qualcomm i Samsung, w których mogli odtworzyć błąd
- 30 marca 2018 r: Programiści XDA skontaktował się zarówno z Samsungiem, jak i Qualcommem, przekazując pełne szczegóły raportu. Nasz kontakt z Qualcomm skontaktował się z nami, potwierdzając otrzymanie naszej wiadomości.
- 2 kwietnia 2018 r: Nasz kontakt z firmą Samsung skontaktował się z nami, potwierdzając otrzymanie naszej wiadomości.
- 4 kwietnia 2018 r: Nasz kontakt z firmą Samsung zalecił nam złożenie raportu w firmie Samsung Raportowanie bezpieczeństwa strona. Programiści XDA złożył raport, do którego przydzielono inżyniera firmy Samsung.