Chrome Version: 65.0.3325.162 (Official Build) (64-bit)
Revision 5d04e9e9c8ce31bee0923a8c326a7e9e19c492a3-refs/branch-heads/3325@{#695}
OS: macOS 10.13.3
What steps will reproduce the problem?
(1) On a MacBook Pro (Retina, 15-inch, Late 2013) with NVIDIA discrete GPU, run several WebGL demos in multiple tabs; for example, the demos from this presentation:
https://www.khronos.org/webgl/wiki/Presentations#Khronos_Developer_Day_at_GDC_2018
(2) Switch among these tabs.
What is the expected result?
Expect demos to run reliably.
What happens instead?
"Rats, WebGL hit a snag" is raised occasionally.
Here are two crash reports:
ab07cef177480795
4adf40bc595a8b85
The first one is the most suspicious. It's a crash while deleting a texture. I wonder whether there is an accounting bug in the driver and whether we should manually traverse the context and all objects which might refer to that texture (like framebuffers) and unbind it before deleting it.
This is also just a bug sighting. I expect to close this as WontFix.
Thread 0 (id: 4581151) CRASHED [0x00000000 / 0x00000000 @ 0x00007fff5b3bbe3e ] MAGIC SIGNATURE THREAD
Stack Quality66%Show frame trust levels
0x00007fff5b3bbe3e (libsystem_kernel.dylib + 0x0001be3e ) __pthread_kill
0x00007fff5b318311 (libsystem_c.dylib + 0x0005d311 ) abort
0x00007fff4c23315c (libGPUSupportMercury.dylib + 0x0000215c ) gpusGenerateCrashLog
0x00007fff2e49257e (GeForceGLDriver + 0x0031957e )
0x00007fff4c234541 (libGPUSupportMercury.dylib + 0x00003541 ) gpusSubmitDataBuffers
0x00007fff2e48da3d (GeForceGLDriver + 0x00314a3d )
0x00007fff2e48d728 (GeForceGLDriver + 0x00314728 )
0x00007fff3dd6d268 (GLEngine + 0x0013e268 ) gleUnbindTextureObject
0x00007fff3dd3dc3b (GLEngine + 0x0010ec3b ) gleUnbindDeleteHashNamesAndObjects
0x00007fff3dc4c84f (GLEngine + 0x0001d84f ) glDeleteTextures_Exec
0x0000000109a90ba9 (Google Chrome Framework -texture_manager.cc:581 ) gpu::gles2::Texture::RemoveTextureRef(gpu::gles2::TextureRef*, bool)
0x0000000109a9452b (Google Chrome Framework -texture_manager.cc:1925 ) gpu::gles2::TextureRef::~TextureRef()
0x00000001099e1159 (Google Chrome Framework -ref_counted.h:334 ) gpu::gles2::TextureAttachment::~TextureAttachment()
0x00000001099e0351 (Google Chrome Framework -ref_counted.h:334 ) gpu::gles2::Framebuffer::AttachTexture(unsigned int, gpu::gles2::TextureRef*, unsigned int, int, int)
0x0000000109a15e97 (Google Chrome Framework -gles2_cmd_decoder.cc:8150 ) gpu::gles2::GLES2DecoderImpl::DoFramebufferTexture2DCommon(char const*, unsigned int, unsigned int, unsigned int, unsigned int, int, int)
0x00000001099ed3fc (Google Chrome Framework -gles2_cmd_decoder.cc:8072 ) gpu::gles2::GLES2DecoderImpl::HandleFramebufferTexture2D(unsigned int, void const volatile*)
0x0000000109a0ff12 (Google Chrome Framework -gles2_cmd_decoder.cc:5551 ) gpu::error::Error gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<false>(unsigned int, void const volatile*, int, int*)
0x00000001094b9667 (Google Chrome Framework -command_buffer_service.cc:90 ) gpu::CommandBufferService::Flush(int, gpu::AsyncAPIInterface*)
0x0000000109b21726 (Google Chrome Framework -command_buffer_stub.cc:634 ) gpu::CommandBufferStub::OnAsyncFlush(int, unsigned int, bool)
0x0000000109b2155b (Google Chrome Framework -tuple.h:52 ) bool IPC::MessageT<GpuCommandBufferMsg_AsyncFlush_Meta, std::__1::tuple<int, unsigned int, bool>, void>::Dispatch<gpu::CommandBufferStub, gpu::CommandBufferStub, void, void (gpu::CommandBufferStub::*)(int, unsigned int, bool)>(IPC::Message const*, gpu::CommandBufferStub*, gpu::CommandBufferStub*, void*, void (gpu::CommandBufferStub::*)(int, unsigned int, bool))
...
Comment 1 by kbr@chromium.org
, Mar 20 2018