Critical GPU Bug Capable of Triggering Reboots Found in Snapdragon Variants of the Samsung Galaxy S9/S9 Plus
There’s no denying the fact that the Samsung Galaxy S9 is arguably one of the best Android phones on the market right now, but it isn’t without its share of problems. From black crush problems in the super AMOLED panel to dead zones on the touchscreen, the device has more than its share of problems, merely months after launch. Today’s bug is far more serious and was discovered by a U.K. based company called GraphicsFuzz, which specializes in testing GPU reliability on mobile devices.
Earlier, the company discovered a security issue affecting the ARM driver for the Samsung Galaxy S6, for which Google awarded them a bug bounty. While testing the Snapdragon variant of the Samsung Galaxy S9, the team found an error in the Adreno 630’s graphics driver that triggers a whole-phone reboot via an Internet page, when browsing with the stock Samsung Internet browser. According to GraphicsFuzz, there is an error in the Adreno 630’s rendering of a shader (a program that allows the GPU to render an image) that can trigger a reboot under certain conditions. A
Exynos-based devices worked just fine, the Adreno 630 GPU found to be at fault
An in-depth investigation indicated that the root cause of the issue lies in the GPU driver for the Qualcomm Adreno 630, which is part of the Qualcomm Snapdragon 845 system-on-chip. When the phone renders the complex shader, the GPU sets something called a “fence”, which is used to regulate the access to the shared memory between the CPU and GPU. Unlike a dedicated desktop GPU, a mobile GPU shares the same RAM as the CPU, so it uses a fence to access that shared memory, when under load. The problem arises from the fact that the fence is not able to complete which causes the phone to reboot. XDA Developers tested the Snapdragon-based Samsung Galaxy S9+ with several browsers and obtained the following results:
|Google Chrome v65.0.3325.109||Freezes for ~2 seconds only|
|Samsung Internet v22.214.171.124||Freezes then eventually triggers a full reboot|
|Opera v45.1.2246.125351||Freezes phone|
|Microsoft Edge v126.96.36.1996||Freezes for ~3 seconds only|
|Firefox v59.0.2||Browser crashes|
The bug only affects Samsung’s in-house browser; Samsung Internet. Other browsers merely crash after a while, as they have mechanisms in place to ends the GPU process after a set period, to prevent the device from crashing. Interestingly, the Exynos variant of the Samsung Galaxy S9, which comes with the Mali-G72 GPU can successfully render the shader, which brings us to the conclusion that the issue lies with the Adreno GPU. Theoretically, the bug should affect any device running the Snapdragon 845 SoC, but that remains to be tested. While the web page able to trigger the reboot on the S9 is kept private for security reasons, the GraphicsFuzz demo let you run 15 tests on your own device to look for less severe bugs, e.g. wrong images due to GPU driver& issues.
Source: XDA developers