New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 8 users
Status: Duplicate
Merged: issue 729686
Owner:
Closed: Sep 20
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android, Mac
Pri: 1
Type: Bug-Regression

Blocked on:
issue 686260
issue 744678

Blocking:
issue 575305
issue 609252



Sign in to add a comment
"Rats! WebGL hit a snag" error showing up more often than in the past
Project Member Reported by mdw@chromium.org, Feb 7 2017 Back to list
On quite a few websites these days, I get an error from Chrome: "Rats! WebGL hit a snag." (Screenshot attached.)
This is on the current M57 dev channel on Android -- I'm not sure if there's been a regression, since I seem to be seeing these more often.

This is a pretty strange message to be showing users, for a few reasons:

- It's too technical. Most people don't know what WebGL is (nor should they care). We don't pop up error messages like this for anything else that goes wrong in the browser, unless it's a hard crash of the render process (which shows a sad tab page). Why this special case for WebGL?

- It's too informal. "Rats" and "Hit a snag" are cute, colloquial terms, but I doubt they internationalize very well. (Is this message shown in languages other than English? If so, would a non-English-speaking user understand what it means?)

- There's no meaningful action that a user can take in this case. The options are "Reload", "Ignore", or dismiss through the X. I am not sure why a user would care about reloading vs. ignore vs. dismiss.

I'm not quite sure if this error message is shown on anything other than Dev channel; if it's Dev only, it's probably fine. But if this message is shown on beta or stable channels, I'd argue that we should remove it.


 
Screenshot_20170206-165417.png
456 KB View Download
Comment 1 by mdw@chromium.org, Feb 7 2017
I also note that there are 100+ posts on this help forum thread about this issue:

https://productforums.google.com/forum/#!topic/chrome/E4pjEjGI0pQ

The advice being given is to disable WebGL in chrome://flags.

This alone suggests we should remove an error message that is confusing our users.
Mergedinto: 575305
Status: Duplicate
Deja vu, we just had  Issue 686260  saying the same thing.

I'm concerned with the sudden uptick in "WebGL hit a snag" reports.

But this report, in itself, would be solved by Issue 575305.
Cc: mdw@chromium.org
mdw:

I'm looking into the possible sudden increase in "WebGL hit a snag" errors. Can you copy-paste the text of about:gpu on that device? Thanks.
Oh, one more question. Do you see this in standalone Chrome or is it only in Chrome Custom Tabs (the semi-embedded chrome tab interface)?
Comment 5 by mdw@chromium.org, Feb 14 2017
Hi Kai,

Here's the output from chrome://gpu on this device. Note that I saw this last a few days ago, it is possible that Chrome has updated since then or that this output no longer reflects the errors I was seeing.

I have seen this error both in CCT and regular browsing. Let me know if you need any other details and thanks for looking into this!




Graphics Feature Status
Canvas: Hardware accelerated
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Disabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Rasterization: Hardware accelerated
Video Decode: Hardware accelerated
Video Encode: Software only, hardware acceleration unavailable
VPx Video Decode: Hardware accelerated
WebGL: Hardware accelerated
WebGL2: Unavailable
Driver Bug Workarounds
broken_egl_image_ref_counting
clear_uniforms_before_first_program_use
disable_chromium_framebuffer_multisample
disable_depth_texture
disable_framebuffer_cmaa
disable_program_caching_for_transform_feedback
disable_program_disk_cache
force_cube_map_positive_x_allocation
max_copy_texture_chromium_size_1048576
max_texture_size_limit_4096
scalarize_vec_and_mat_constructor_args
unbind_egl_context_to_flush_driver_caches
use_virtualized_gl_contexts
wake_up_gpu_before_drawing
Problems Detected
MediaCodec is still too buggy to use for encoding (b/11536167): 615108
Disabled Features: accelerated_video_encode
WebGL 2 is not yet ready on Android: 295792, 641635
Disabled Features: webgl2
Disable depth textures on Android with Qualcomm GPUs
Applied Workarounds: disable_depth_texture
Non-virtual contexts on Qualcomm sometimes cause out-of-order frames: 289461
Applied Workarounds: use_virtualized_gl_contexts
The first draw operation from an idle state is slow: 309734
Applied Workarounds: wake_up_gpu_before_drawing
ES3 MSAA is broken on Qualcomm: 449116, 471200, 612474
Applied Workarounds: disable_chromium_framebuffer_multisample
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
Certain Adreno 4xx and 5xx drivers often crash in glProgramBinary.: 486117, 598060
Applied Workarounds: disable_program_disk_cache
glFinish doesn't clear caches on Android: 509727
Applied Workarounds: unbind_egl_context_to_flush_driver_caches
Android Adreno crashes on binding incomplete cube map texture to FBO: 518889
Applied Workarounds: force_cube_map_positive_x_allocation
CHROMIUM_copy_texture with 1MB copy per flush to avoid unwanted cache growth on Adreno: 542478
Applied Workarounds: max_copy_texture_chromium_size_1048576
EGLImage ref counting across EGLContext/threads is broken: 585250
Applied Workarounds: broken_egl_image_ref_counting
Limit max texure size to 4096 on all of Android
Applied Workarounds: max_texture_size_limit_4096
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
Adreno 5xx support for EXT_multisampled_render_to_texture is buggy on Android 7.1: 663811
Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Program binaries don't contain transform feedback varyings on Qualcomm GPUs: 658074
Applied Workarounds: disable_program_caching_for_transform_feedback
Raster is using a single thread.
Disabled Features: multiple_raster_threads
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Version Information
Data exported	2/14/2017, 8:55:17 AM
Chrome version	Chrome/57.0.2977.4
Operating system	Android 7.1.2
Software rendering list version	12.07
Driver bug list version	9.28
ANGLE commit id	037340d7feb4
2D graphics backend	Skia/57 a16339297859f37df69230e64f05624cef511ad3
Command Line Args	--use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --use-mobile-user-agent --enable-pinch --enable-viewport --enable-overlay-scrollbar --validate-input-event-stream --enable-longpress-drag-selection --touch-selection-strategy=direction --disable-gpu-process-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-timing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --data-reduction-proxy-lo-fi=cellular-only --enable-data-reduction-proxy-lite-page --flag-switches-end --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5
Driver Information
Initialization time	212
In-process GPU	false
Passthrough Command Decoder	false
Sandboxed	false
GPU0	VENDOR = 0x0000 [Qualcomm], DEVICE= 0x0000 [Adreno (TM) 530]
Optimus	false
AMD switchable	false
Driver vendor	
Driver version	145.0
Driver date	
Pixel shader version	3.20
Vertex shader version	3.20
Max. MSAA samples	4
Machine model name	Pixel
Machine model version	
GL_VENDOR	Qualcomm
GL_RENDERER	Adreno (TM) 530
GL_VERSION	OpenGL ES 3.2 V@145.0 (GIT@Idb2b4cb785)
GL_EXTENSIONS	GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_half_float GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_compressed_ETC1_RGB8_texture GL_AMD_compressed_ATC_texture GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_OES_texture_compression_astc GL_OES_texture_npot GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_OES_texture_3D GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_QCOM_alpha_test GL_OES_depth24 GL_OES_packed_depth_stencil GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_EXT_sRGB GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_sRGB_decode GL_OES_element_index_uint GL_EXT_copy_image GL_EXT_geometry_shader GL_EXT_tessellation_shader GL_OES_texture_stencil8 GL_EXT_shader_io_blocks GL_OES_shader_image_atomic GL_OES_sample_variables GL_EXT_texture_border_clamp GL_EXT_multisampled_render_to_texture GL_OES_shader_multisample_interpolation GL_EXT_texture_cube_map_array GL_EXT_draw_buffers_indexed GL_EXT_gpu_shader5 GL_EXT_robustness GL_EXT_texture_buffer GL_EXT_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_OES_texture_storage_multisample_2d_array GL_OES_sample_shading GL_OES_get_program_binary GL_EXT_debug_label GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_QCOM_tiled_rendering GL_ANDROID_extension_pack_es31a GL_EXT_primitive_bounding_box GL_OES_standard_derivatives GL_OES_vertex_array_object GL_EXT_disjoint_timer_query GL_KHR_debug GL_EXT_YUV_target GL_EXT_sRGB_write_control GL_EXT_texture_norm16 GL_EXT_discard_framebuffer GL_OES_surfaceless_context GL_OVR_multiview GL_OVR_multiview2 GL_EXT_texture_sRGB_R8 GL_KHR_no_error GL_EXT_debug_marker GL_OES_EGL_image_external_essl3 GL_OVR_multiview_multisampled_render_to_texture GL_EXT_buffer_storage GL_EXT_blit_framebuffer_params GL_EXT_clip_cull_distance GL_EXT_protected_textures
Disabled Extensions	GL_EXT_multisampled_render_to_texture GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_depth_texture
Window system binding vendor	
Window system binding version	
Window system binding extensions	
Direct rendering	Yes
Reset notification strategy	0x8252
GPU process crash count	0
Compositor Information
Tile Update Mode	One-copy
Partial Raster	Enabled
GpuMemoryBuffers Status
ATC	Software only
ATCIA	Software only
DXT1	Software only
DXT5	Software only
ETC1	Software only
R_8	Software only
RG_88	Software only
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	Software only
BGRX_8888	Software only
BGRA_8888	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only
Log Messages
[ERROR:gles2_cmd_decoder.cc(15303)] : Context lost because SwapBuffers failed.
[ERROR:gles2_cmd_decoder.cc(5249)] : Error: 5 for Command kSwapBuffers
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
[ERROR:gles2_cmd_decoder.cc(4197)] : GLES2DecoderImpl: Trying to make lost context current.
Comment 6 by kbr@chromium.org, Mar 7 2017
Blockedon: 686260
Blocking: 575305
Cc: kainino@chromium.org fsam...@chromium.org creis@chromium.org kylec...@chromium.org
Components: Blink>HTML>IFrame Internals>Sandbox>SiteIsolation
Labels: -Pri-3 OS-Mac Pri-2
Owner: kbr@chromium.org
Status: Assigned
Summary: "Rats! WebGL hit a snag" error showing up more often than in the past (was: "Rats! WebGL hit a snag" error is confusing)
I'm un-merging this from Issue 575305 and linking it to related  Issue 686260 . This morning with Chrome Stable (56) on macOS I saw this happen twice while reading the New York Times. I've also intermittently seen it on Android. There is a definite increase in the appearance of this infobar.

Based on the log above and investigation by kainino@, SwapBuffers is failing for one of the contexts -- probably the WebGL context, though I'm not sure why it's calling that. WebGL communicates its rendering results to the compositor via mailboxes, and shouldn't be attempting to call SwapBuffers on its GLES2Implementation.

I have a hunch that this is related to out-of-process iframes (OOPIF), and am adding a couple of components to this bug. My guess is that an ad is running in an OOPIF, creating a WebGL context for feature detection purposes, and for some reason the browser attempts to call SwapBuffers on it and that fails. Perhaps the offscreen color buffer in the command buffer hasn't been allocated, or is size 0 x 0, or similar.

creis@ or fsamuel@ or kylechar@: are there tests of WebGL in out-of-process iframes? Or, could you point me to a self-contained test case which launches an iframe in another process in a guaranteed fashion so I can modify it and try to reproduce this? Thanks.

Comment 7 by kbr@chromium.org, Mar 8 2017
Cc: zmo@chromium.org
Labels: -Type-Bug -Pri-2 Pri-1 Type-Bug-Regression
Owner: creis@chromium.org
Here's strong evidence that it's iframe-related, if not out-of-process-iframe related. This is a screenshot of the New York Times web site as it's failing to load a 360 video player on the front page, which is part of an ad hosted inside an iframe. Full-page WebGL content like the WebGL Aquarium runs fine in the same browser session. about:gpu follows. The browser session has been running for a while and there were 2 GPU process crashes in the past, but none recently.

creis@: is there anyone on your team who can take this and try to reproduce?

-----

Graphics Feature Status
Canvas: Hardware accelerated
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Hardware accelerated
Rasterization: Hardware accelerated
Video Decode: Hardware accelerated
Video Encode: Hardware accelerated
VPx Video Decode: Hardware accelerated
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Driver Bug Workarounds
adjust_src_dst_region_for_blitframebuffer
decode_encode_srgb_for_generatemipmap
disable_ext_draw_buffers
disable_framebuffer_cmaa
disable_multimonitor_multisampling
get_frag_data_info_bug
needs_offscreen_buffer_workaround
pack_parameters_workaround_with_pack_buffer
regenerate_struct_names
remove_invariant_and_centroid_for_essl3
reset_base_mipmap_level_before_texstorage
scalarize_vec_and_mat_constructor_args
set_zero_level_before_generating_mipmap
unfold_short_circuit_as_ternary_operation
unpack_alignment_workaround_with_unpack_buffer
use_intermediary_for_copy_texture_image
use_unused_standard_shared_blocks
Problems Detected
Work around a bug in offscreen buffers on NVIDIA GPUs on Macs: 89557
Applied Workarounds: needs_offscreen_buffer_workaround
Disable EXT_draw_buffers on GeForce GT 650M on Mac OS X due to driver bugs
Applied Workarounds: disable_ext_draw_buffers
Multisampling is buggy on OSX when multiple monitors are connected: 237931
Applied Workarounds: disable_multimonitor_multisampling
Unfold short circuit on Mac OS X: 307751
Applied Workarounds: unfold_short_circuit_as_ternary_operation
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
Mac drivers handle struct scopes incorrectly: 403957
Applied Workarounds: regenerate_struct_names
glGenerateMipmap fails if the zero texture level is not set on some Mac drivers: 560499
Applied Workarounds: set_zero_level_before_generating_mipmap
Pack parameters work incorrectly with pack buffer bound: 563714
Applied Workarounds: pack_parameters_workaround_with_pack_buffer
Alignment works incorrectly with unpack buffer bound: 563714
Applied Workarounds: unpack_alignment_workaround_with_unpack_buffer
copyTexImage2D fails when reading from IOSurface on multiple GPU types.: 581777
Applied Workarounds: use_intermediary_for_copy_texture_image
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
glGetFragData{Location|Index} works incorrectly on Max: 638340
Applied Workarounds: get_frag_data_info_bug
glTexStorage* are buggy when base mipmap level is not 0: 640506
Applied Workarounds: reset_base_mipmap_level_before_texstorage
Decode and encode before generateMipmap for srgb format textures on macosx: 634519
Applied Workarounds: decode_encode_srgb_for_generatemipmap
Insert statements to reference all members in unused std140/shared blocks on Mac: 618464
Applied Workarounds: use_unused_standard_shared_blocks
adjust src/dst region if blitting pixels outside read framebuffer on Mac: 644740
Applied Workarounds: adjust_src_dst_region_for_blitframebuffer
Mac driver GL 4.1 requires invariant and centroid to match between shaders: 639760, 641129
Applied Workarounds: remove_invariant_and_centroid_for_essl3
Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Version Information
Data exported	3/8/2017, 1:06:38 AM
Chrome version	Chrome/57.0.2987.88
Operating system	Mac OS X 10.12.3
Software rendering list version	12.13
Driver bug list version	9.29
ANGLE commit id	c1a5d16e964a
2D graphics backend	Skia/57 7695359876b8f90225bc4be895c20f34fcdfaf2e
Command Line Args	Chrome.app/Contents/MacOS/Google Chrome --restore-last-session --flag-switches-begin --flag-switches-end
Driver Information
Initialization time	44
In-process GPU	false
Passthrough Command Decoder	false
Sandboxed	true
GPU0	VENDOR = 0x10de, DEVICE= 0x0fd5 *ACTIVE*
GPU1	VENDOR = 0x8086, DEVICE= 0x0166
Optimus	true
AMD switchable	false
Driver vendor	
Driver version	10.22.29
Driver date	
Pixel shader version	4.10
Vertex shader version	4.10
Max. MSAA samples	8
Machine model name	MacBookPro
Machine model version	10.1
GL_VENDOR	Intel Inc.
GL_RENDERER	Intel HD Graphics 4000 OpenGL Engine
GL_VERSION	4.1 INTEL-10.22.29
GL_EXTENSIONS	GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier
Disabled Extensions	GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent
Window system binding vendor	
Window system binding version	
Window system binding extensions	
Direct rendering	Yes
Reset notification strategy	0x0000
GPU process crash count	2
Compositor Information
Tile Update Mode	Zero-copy
Partial Raster	Enabled
GpuMemoryBuffers Status
ATC	Software only
ATCIA	Software only
DXT1	Software only
DXT5	Software only
ETC1	Software only
R_8	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
RG_88	Software only
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	GPU_READ, SCANOUT
BGRX_8888	GPU_READ, SCANOUT
BGRA_8888	GPU_READ, SCANOUT, GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
YVU_420	Software only
YUV_420_BIPLANAR	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
UYVY_422	GPU_READ_CPU_READ_WRITE, GPU_READ_CPU_READ_WRITE_PERSISTENT
Log Messages
[911:16195:0303/020915.581306:ERROR:gpu_watchdog_thread.cc(373)] : The GPU process hung. Terminating after 10000 ms.
GpuProcessHostUIShim: The GPU process crashed!
[1865:16195:0303/071317.654597:ERROR:gpu_watchdog_thread.cc(373)] : The GPU process hung. Terminating after 10000 ms.
GpuProcessHostUIShim: The GPU process crashed!
[4935:775:0303/082812.761026:ERROR:gles2_cmd_decoder.cc(16167)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_VALUE : glCopySubTextureCHROMIUM: unknown texture id
[4935:775:0303/082812.761074:ERROR:gles2_cmd_decoder.cc(17173)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_OPERATION : glProduceTextureDirectCHROMIUM: unknown texture for target
[4935:775:0303/082812.761794:ERROR:gles2_cmd_decoder.cc(16666)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_VALUE : glCopySubTextureCHROMIUM: destination texture bad dimensions.
[4935:775:0303/082812.761846:ERROR:gles2_cmd_decoder.cc(17186)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_OPERATION : glProduceTextureDirectCHROMIUM: invalid target
[4935:775:0303/082814.655987:ERROR:gles2_cmd_decoder.cc(16167)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_VALUE : glCopySubTextureCHROMIUM: unknown texture id
[4935:775:0303/082814.656027:ERROR:gles2_cmd_decoder.cc(17173)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_OPERATION : glProduceTextureDirectCHROMIUM: unknown texture for target
[4935:775:0303/082814.656164:ERROR:gles2_cmd_decoder.cc(16167)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_VALUE : glCopySubTextureCHROMIUM: unknown texture id
[4935:775:0303/082814.656187:ERROR:gles2_cmd_decoder.cc(17173)] : [.Offscreen-MainThread-0x7fb8759b6c00]GL ERROR :GL_INVALID_OPERATION : glProduceTextureDirectCHROMIUM: unknown texture for target
[4935:775:0303/084231.204669:ERROR:latency_info.cc(163)] : GpuCommandBufferStub::OnAsyncFlush, LatencyInfo vector size 1751 is too big.
[4935:775:0303/084731.488200:ERROR:latency_info.cc(163)] : GpuCommandBufferStub::OnAsyncFlush, LatencyInfo vector size 181 is too big.
[4935:775:0304/235829.077976:ERROR:latency_info.cc(163)] : GpuCommandBufferStub::OnAsyncFlush, LatencyInfo vector size 300 is too big.
[4935:775:0308/085646.577032:ERROR:interface_registry.cc(203)] : Failed to locate a binder for interface: chrome::mojom::ResourceUsageReporter requested by: exposed by: via InterfaceProviderSpec "service_manager:connector".
[4935:775:0308/085646.577090:WARNING:interface_registry.cc(210)] : InterfaceRegistry(service_manager:connector): --> InterfaceRegistry is not yet bound to a pipe.

Screen Shot 2017-03-08 at 12.58.57 AM.png
893 KB View Download
Comment 8 by kbr@chromium.org, Mar 8 2017
Note: I restarted the browser and the problem is no longer readily reproducible, even reloading the page over and over again. In hindsight, I might have forgotten to click the "Reload" button in the infobar, so it's possible that a GPU process crash from some time ago might have blocked WebGL access on nytimes.com, and so the ad which used WebGL would correctly have been blocked.

The question is still why WebGL in an iframe appears to be so unstable.

Comment 9 by creis@chromium.org, Mar 8 2017
Cc: kenrb@chromium.org
Owner: lfg@chromium.org
We aren't using out-of-process iframes for normal web pages yet-- only when an extension page has a web iframe or vice versa (unless the user has turned on something like --top-document-isolation or --site-per-process).  The example in comment 7 is not an OOPIF, for example, since the screenshot shows the iframe's source inline in the DevTools window (which doesn't work until  issue 652783  is fixed).

That said, there could definitely be something iframe related here, either from our changes or not.  I've also been seeing this error a lot on Mac (with --isolate-extensions enabled) when using Google Photos (when a video plays), and I think on Android on AMP pages (with no OOPIF mode enabled).

lfg@ or kenrb@, do you know if any of the frame changes we've made might be contributing to this?
Comment 10 by kbr@chromium.org, Mar 8 2017
Thanks creis@ for your input and apologies that I didn't know the state of OOPIFs. I don't mean to make your team triage a likely WebGL-specific bug, but if you can provide any pointers as to how the backing store for iframes might be being handled specially even in the in-process case, that would be helpful. Thanks.

No worries.  I think iframes do get their own surface, but I'll definitely have to defer to kenrb@ or lfg@ here for details.  Maybe they can share what they know and assign it back?
In-process iframes are not special in this regard, they get their own backing surface only if there is a reason, such as a transform that requires a separate composited layer. I would expect that an ad with a 360 video player would cause this to be the case, but it's not an area that we have touched. OOPIFs, obviously, always get a separate backing surface, in the other process.

I don't have any useful insight into what might be causing this. lfg@ might have additional thoughts.
Comment 13 by creis@chromium.org, Mar 13 2017
Cc: lfg@chromium.org
Components: Internals>Compositing
Owner: kbr@chromium.org
It looks like lfg@ is OOO this whole week, so I'll assign this back to kbr@ for triage given comment 12.  Maybe someone on the compositing team would be able to help further about the surface aspect of it?
Comment 14 by lfg@chromium.org, Mar 21 2017
Cc: jbau...@chromium.org
As Ken pointed out, the OOPIF-related changes shouldn't affect the rendering of in-process iframes, which is the case in comment #7. The only thing that could be possibly related is the fact that with OOPIFs we may be using more GPU resources in general.

Perhaps jbauman@ could have some ideas.

Cc: piman@chromium.org danakj@chromium.org
+piman@ +danakj@
Comment 16 by piman@chromium.org, Mar 21 2017
Cc: aelias@chromium.org ccameron@chromium.org
The only contexts that should call SwapBuffers are the UI compositor's and possibly Pepper ones (i.e. not on Android). I believe Pepper ones can't fail SwapBuffers, so it's not that either.

SwapBuffers failing loses contexts and at least on Android, that makes us kill the GPU process, which would among others lose the webgl context and show the infobar.

I'm not sure it necessarily makes sense to merge the Mac and the Android versions of this bug, because the root cause seems very different (e.g. Mac's SwapBuffers doesn't have a path where it fails, and the report looks unrelated where the GPU process hangs instead and then gets killed by the watchdog).

For Android, it would be useful to have more details about the failure reason. There can be many cases that lead to that same error (coalesced into GLES2DecoderImpl::FinishSwapBuffers, that shows the error, but the actual error came from before).
Reviving this bug to see if we can at least fix the string by addressing the issues mdw@ mentions in c#1: too technical, too informal.

Proposal is to change the string to "Can’t load 3D graphics on this page" 
Include RELOAD if reload might fix the problem. 



Too technical might make sense, but isn't the casual tone of the message consistent with other Chrome error messaging? (i.e. "Aw, snap", "He's dead Jim")
Blocking: 609252
Cc: vmi...@chromium.org
We're going to replace this UI to eliminate the infobar entirely in Issue 575305. There's a possibility that the increased "Rats!" infobars are caused by bugs where the GPU watchdog is firing more often than it used to; see  Issue 609252 , which we haven't had any success in diagnosing.

This mainly seems to affect ads that are for one reason or another allocating a WebGL context for feature detection that they don't actually use.

My wife has been hitting this pretty regularly on Chrome on her Macbook Pro on Google sites such as Google Maps. She also hits it on her Android Chrome. Let me know if there are any diagnostics we can run for you.
Blockedon: 744678
Components: -Blink>HTML>IFrame
I've never seen this message before, and now see it within hours of running Chrome.
Gmail and Google Photos tabs show this.

Windows 10 just downloaded and installed a major update, and that is the only change I can think of to my system.

Chrome: Version 60.0.3112.90 (Official Build) (64-bit)
Windows 10 Pro, Version 1703


#23: please copy/paste the contents of about:gpu to a plaintext file and attach the contents here. Thanks.

(Your GPU process is probably crashing and the question is why. Also, Gmail just started creating a WebGL rendering context for no good reason; I filed b/64543405 about this yesterday.)

Comment 25 Deleted
Cc: stanisc@chromium.org
Mergedinto: -575305 729686
Status: Duplicate
stanisc@ just fixed a longstanding bug which affected Chrome's suspend/resume detection on all platforms. I think this is the cause of this infobar popping up more often on Windows and Mac, at least, if not Android too. Personally I haven't seen this happen in a while.

I'm going to duplicate this report into the one where that issue was fixed. If it still seems to be happening with Canary or Dev then please reopen it.

Sign in to add a comment