Samsung Galaxy S9 и Galaxy S9+ были запущены на нескольких рынках, включая США, Гонконг и некоторые части Латинской Америки, со встроенной системой Qualcomm Snapdragon 845. Британская фирма GraphicsFuzz обнаружила ошибку стабильности графического процессора, которую можно использовать для запуска удаленной перезагрузки/сбоя телефона.
Новый Самсунг Галакси С9 включает новейшую встроенную систему Qualcomm Snapdragon 845 для нескольких рынков, включая Гонконг, США, Канаду и некоторые страны Латинской Америки. На некоторых рынках Samsung часто выбирает новейшую флагманскую SoC Qualcomm Snapdragon вместо собственной SoC Exynos. Обычно так происходит в США, за исключением Samsung Galaxy S6. Для обычного потребителя разница между вариантами Exynos 9810 и Snapdragon 845 невелика. Однако на самом деле разница в чипсетах может привести к совершенно разным впечатлениям.
АнандтекОбзор Snapdragon Galaxy S9 и Exynos Galaxy S9 выявил резкие различия в производительности. и время автономной работы между двумя моделями: модель Snapdragon легко превосходит модель Exynos. По данным британской компании под названием
ГрафикаFuzz. ГрафикаFuzz — это начинающая фирма, которая специализируется на тестировании надежности графических процессоров на устройствах. Они разрабатывают тесты для поиска ошибок в графических драйверах и предлагают помощь в диагностике коренных причин любых обнаруженных проблем. Например, команда обнаружила проблему безопасности. влияет на драйвер ARM для Samsung Galaxy S6, за что они получили награду от Google. Во время тестирования Snapdragon Samsung Galaxy S9 ГрафикаFuzz обнаружили ошибку в графическом драйвере Adreno 630, которая позволяет им вызвать перезагрузку всего телефона через действующую интернет-страницу WebGL при просмотре с помощью стандартного интернет-браузера Samsung.В частности, существует ошибка при рендеринге Adreno 630 сложного, но корректного шейдера, который можно использовать для того, чтобы заставить устройство зависать, а затем, в конечном итоге, перезагружаться. Шейдер — это просто программа, которая позволяет графическому процессору визуализировать изображение. ГрафикаFuzz не создавали страницу WebGL со злым намерением вызвать эту ошибку, а вместо этого заявляют, что она была случайно обнаружена во время стандартного тестирования стабильности графического процессора устройств. Как только они обнаружили, что этот удаленный сбой можно воспроизвести, компания обратилась к XDA-Разработчики чтобы облегчить процесс раскрытия информации как для Qualcomm, так и для Samsung.
Воспроизведение сбоя WebGL на Snapdragon Samsung Galaxy S9
Прежде чем обратиться к представителям обеих компаний, мы проверили ГрафикаFuzzвыводы на нашем собственном устройстве. ГрафикаFuzz создали для нас специальную веб-страницу для тестирования и выбрали 5 самых популярных интернет-браузеров в магазине Google Play, чтобы посмотреть, что произойдет. В таблице ниже показаны эффекты отрисовки сложного шейдера в 5 различных веб-браузерах.
Протестировано устройство: Qualcomm Snapdragon 845 Samsung Galaxy S9+ (SM-G965U)
Операционная система: Андроид 8.0.0 Орео SM-G965U
Веб-браузер |
Результат |
---|---|
Гугл Хром v65.0.3325.109 |
Зависает всего на ~2 секунды |
Самсунг Интернет v7.0.10.46 |
Зависает, а затем в конечном итоге вызывает полную перезагрузку |
Опера v45.1.2246.125351 |
Зависает телефон |
Microsoft Edge v1.0.0.1726 |
Зависает всего на ~3 секунды |
Firefox v59.0.2 |
Браузер вылетает |
И Google Chrome, и Microsoft Edge зависают на телефоне на несколько секунд и выдают ошибку WebGL, но в конечном итоге с устройством все будет в порядке. ГрафикаFuzz сообщили нам, что они уже некоторое время обсуждали это с командой Google Chrome и узнали что Chrome реализует механизм, который завершает процесс графического процессора через заданный период времени, чтобы предотвратить полную перегрузку телефона. крушение. Opera зависает на телефоне, но не вызывает перезагрузку. Само приложение Firefox вылетает, но с телефоном все в порядке. Наконец, доступ к странице через Интернет Samsung приводит к замедлению работы телефона до полной перезагрузки телефона.
Вот видео-демонстрация аварии:
Подробное объяснение ошибки
ГрафикаFuzz провел более углубленное расследование, которое показало, что проблема, вызывающая перезагрузку телефона, в драйвере графического процессора Qualcomm Adreno 630, который является частью Qualcomm Snapdragon 845. система на кристалле. ГрафикаFuzz собрал лог падения, который мы встроили ниже. Кратко о том, что происходит: когда телефон выполняет рендеринг сложного шейдера, графический процессор устанавливает нечто, называемое «забором». Ограждение используется для организации доступа к общей памяти между ЦП. и графический процессор. Мобильный графический процессор, в отличие от настольного компьютера, имеет доступ к той же оперативной памяти, что и процессор, поэтому, когда игра ведется или выполняется какой-либо другой рендеринг, он использует ограждение для доступа к этой общей памяти. На устройстве с дискретной графикой сам графический процессор имеет собственную память. Все современные мобильные телефоны используют видеопамять и оперативную память совместно с флэш-памятью оперативной памяти. Проблема здесь в том, что ограждение не может быть завершено, что вызывает панику ядра и приводит к перезагрузке телефона.
Завершить панику ядра перед перезагрузкой
[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
читать далее
ГрафикаFuzz считает, что причина, по которой эта проблема возникает только в интернет-браузере Samsung, заключается в сторожевом таймере графического процессора. Иногда графический процессор может зависать при длительно работающих шейдерах, и в этом случае браузер или операционная система обычно имеют сторожевой таймер графического процессора, который принудительно перезапускает не отвечающий графический драйвер. ГрафикаFuzz В тестовом шейдере есть несколько циклов for, из-за которых рендеринг может занять больше времени, но он по-прежнему является допустимым шейдером. Некоторым другим устройствам, включая Exynos 9810 Samsung Galaxy S9 с графическим процессором Mali-G72, удается отрисовать этот шейдер. Таким образом, команда в ГрафикаFuzz пришел к выводу, что эта ошибка происходит из-за неисправного драйвера графического процессора Adreno 630.
Google Pixel 2 XL с графическим процессором Adreno 540 Qualcomm Snapdragon 835 и той же версией интернет-браузера Samsung замедляется до скорости сканирования. ну, это означает, что эта ошибка может быть связана с тем, что драйвер графического процессора Qualcomm отображает шейдер, а сторожевой таймер браузера Samsung не завершает обработку. услуга.
Будем надеяться, что Qualcomm сможет диагностировать основную проблему в своем драйвере графического процессора, которая вызывает перезагрузку, и в ближайшее время предоставит Samsung исправленный драйвер. Конечно, может пройти некоторое время, прежде чем это обновление будет распространено среди конечных пользователей. Тем временем мы ожидаем, что Samsung выпустит обновление для интернет-браузера Samsung, чтобы смягчить последствия. проблема (по крайней мере, предотвращение ее использования через веб-страницу), что соответствует поведению Google Хром. Хотя известно, что эта проблема затрагивает Qualcomm Snapdragon 845 Samsung Galaxy S9/S9+, она также может затронуть и другие устройства с Snapdragon 845.
Если вы заинтересованы в тестировании надежности графического процессора вашего мобильного или настольного устройства, команда ГрафикаFuzz собрал демонстрацию веб-приложения, которая позволяет вам запускать некоторые из действующих шейдеров на вашем устройстве. Вы можете получить доступ к этой веб-странице, перейдя по этой ссылке.
График раскрытия информации
- 28 марта 2018 г.: ГрафикаFuzz обратился к XDA-Разработчики сообщив нам о проблеме. XDA-Разработчики воспроизвел проблему на нашем Samsung Galaxy S9+ (SM-G965U).
- 29 марта 2018 г.: ГрафикаFuzz связался с более подробной информацией и создал специальные веб-страницы для сотрудников Qualcomm и Samsung, чтобы они могли воспроизвести ошибку.
- 30 марта 2018 г.: XDA-Разработчики обратился к Samsung и Qualcomm с подробной информацией об отчете. Наш представитель Qualcomm связался с нами и подтвердил, что наше сообщение было получено.
- 2 апреля 2018 г.: Наш представитель в Samsung ответил нам, подтвердив, что наше сообщение получено.
- 4 апреля 2018 г.: Наш представитель в Samsung рекомендовал нам подать жалобу в Samsung. Отчеты о безопасности страница. XDA-Разработчики подал отчет, и для составления отчета был назначен инженер Samsung.