GPU and Canvas bug in Google Chrome (Windows)

Today I was working on unusual and hence interesting task. The team manager reported about strange “Aw’ Snap!” Google Chrome message on a particular page. Have to say, that page has a gallery, map and Google Street View. I couldn’t reproduce this bug on my machine, and now I’m going to describe what we did to handle this issue.

First we made a plan to reproduce this bug and get “Aw’ snap!” message. All you need to do is open the page and refresh it (or come back to this page later). That’s all, Chrome’s tab dies instantly.

We understood that bug reproduces in Windows only. I work on Mac, but as I wrote before, have virtual machines for any case. But even on a VM this issue was not reproduces. By the way, this is a good example of Virtual Machine inability to reproduce “live” hardware machine.

I started googling the issue and everything I’ve googled is “How to enable logging” in Chrome. I wanted to understand why Chrome crashed and what happened when It said “Aw’ Snap!”. So, to enable logging I run Chrome with flag:

1
--enable-logging --v=1

And then, after it crashes, log chrome_debug.log file is created in UserData directory.

I did so. And started to inspect the log:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[7924:5320:1202/135210:VERBOSE1:policy_loader_win.cc(441)] Reading policy from the registry is enabled.
[7924:5320:1202/135210:VERBOSE1:pref_proxy_config_tracker_impl.cc(216)] 03885C38: set chrome proxy config service to 00A097F8
[7924:5320:1202/135210:VERBOSE1:pref_proxy_config_tracker_impl.cc(354)] 03885C38: Done pushing proxy to UpdateProxyConfig
[7924:6044:1202/135210:VERBOSE1:multi_log_ct_verifier.cc(67)] Adding CT log: Google 'Pilot' log
[7924:6044:1202/135210:VERBOSE1:multi_log_ct_verifier.cc(67)] Adding CT log: Google 'Aviator' log
[7924:6044:1202/135210:VERBOSE1:multi_log_ct_verifier.cc(67)] Adding CT log: DigiCert Log Server
[7924:6044:1202/135210:VERBOSE1:multi_log_ct_verifier.cc(67)] Adding CT log: Google 'Rocketeer' log
[7924:6044:1202/135210:VERBOSE1:multi_log_ct_verifier.cc(67)] Adding CT log: Certly.IO log
[7924:6044:1202/135210:VERBOSE1:multi_log_ct_verifier.cc(67)] Adding CT log: Izenpe log
[7924:6044:1202/135210:VERBOSE1:multi_log_ct_verifier.cc(67)] Adding CT log: Symantec log
[7924:6044:1202/135210:ERROR:cache_util_win.cc(20)] Unable to move the cache: 5
[7924:6044:1202/135210:ERROR:cache_util.cc(132)] Unable to move cache folder C:\Users\User32\AppData\Local\Google\Chrome\User Data\ShaderCache\GPUCache to C:\Users\User32\AppData\Local\Google\Chrome\User Data\ShaderCache\old_GPUCache_000
[7924:6044:1202/135210:ERROR:cache_creator.cc(132)] Unable to create cache
[7924:6044:1202/135210:ERROR:shader_disk_cache.cc(588)] Shader Cache Creation failed: -2

I noticed, surely, last 4 strings. Obviously, browser for some reason couldn’t copy/move a GPUCache directory. I can’t really say that I understand how Chrome works with GPU and its cache, but talking about Windows and GPU is a popular subject last weeks.

Further, switching maps and Street View, I found that problem is Street View. I created an Issue about it on Chromium.

Instead of outcome

I created an isolated example to reproduce this bug. JSFiddle.
Follow the link and after you see Street View image, refresh the page. Just to remember, you must have Windows as OS and Google Chrome (46.0.2490.86).

Полезные ссылки

How to enable logging in Google Chrome
Issue in Chromium

Update This issue fixed in stable 47.