xuxiandi / angleproject

Automatically exported from code.google.com/p/angleproject
Other
0 stars 0 forks source link

Crashes in eglSwapBuffers on Intel GPUs #244

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
We're seeing crashes with the following stack trace in alarmingly high rates, 
always coming from Intel GPUs with the PCI id=0046 (Core Processor Integrated 
Graphics Controller (Intel Corporation)). They don't seem to originate from 
WebGL content.  We've seen driver versions from 7.14.10.5220 to 8.16.11.8694 .  
The gpu process uptime for at least 50% of them is less than 8sec so it may 
very well be the first present. 

0x69818d50   [nvumdshim.dll  + 0x00018d50]  
0x69acb30c   [d3d9.dll   + 0x0011b30c]  CBatchFilterI::LHBatchOpenResource(void 
*,_D3DDDIARG_OPENRESOURCE *)
0x699d9b5f   [d3d9.dll   + 0x00029b5f]  OpenResourceLH
0x699d9cdd   [d3d9.dll   + 0x00029cdd]  OpenResourceLH
0x699b7640   [d3d9.dll   + 0x00007640]  CSwapChain::PresentMain(tagRECT const 
*,tagRECT const *,HWND__ *,_RGNDATA const *,unsigned long)
0x699b7842   [d3d9.dll   + 0x00007842]  CSwapChain::Present(tagRECT const 
*,tagRECT const *,HWND__ *,_RGNDATA const *,unsigned long)
0x71d64d55   [libegl.dll     - surface.cpp:396] egl::Surface::swap()
0x71d67636   [libegl.dll     - libegl.cpp:1085] eglSwapBuffers
0x5d745c5d   [chrome.dll     - 
gl_surface_egl.cc:224]  gfx::NativeViewGLSurfaceEGL::SwapBuffers()
0x5e082f0b   [chrome.dll     - 
gles2_cmd_decoder.cc:6670]  gpu::gles2::GLES2DecoderImpl::HandleSwapBuffers(unsig
ned int,gpu::gles2::SwapBuffers const &)
0x5e07cdda   [chrome.dll     - 
gles2_cmd_decoder.cc:2606]  gpu::gles2::GLES2DecoderImpl::DoCommand(unsigned 
int,unsigned int,void const *)
0x5e079223   [chrome.dll     - 
cmd_parser.cc:57]   gpu::CommandParser::ProcessCommand()
0x5e07879b   [chrome.dll     - gpu_scheduler.cc:165]    gpu::GpuScheduler::PutChanged()
0x5df0109b   [chrome.dll     - 
callback_old.h:119] invalidation::ZeroArgMethodRunner<invalidation::Throttle>::R
unWithParams(Tuple0 const &)
0x5d136990   [chrome.dll     - callback_old.h:79]   CallbackRunner<Tuple0>::Run()
0x5e077c4c   [chrome.dll     - 
command_buffer_service.cc:136]  gpu::CommandBufferService::Flush(int) 

Original issue reported on code.google.com by vangelis@chromium.org on 4 Nov 2011 at 1:23

GoogleCodeExporter commented 9 years ago

Original comment by vangelis@chromium.org on 4 Nov 2011 at 1:24

GoogleCodeExporter commented 9 years ago
I think nvumdshim.dll is a sign they're using Optimus.

Original comment by jbauman@chromium.org on 4 Nov 2011 at 1:27

GoogleCodeExporter commented 9 years ago
nvumdshim.dll, that looks like Optimus hardware (dual NVIDIA/Intel GPU), right? 
Can the problem be reproduced outside of Optimus hardware?

FYI, on Optimus hardware on Windows, when the current detected GPU is the 
NVIDIA one, Firefox defaults to desktop OpenGL instead of ANGLE because of this 
bug:
  https://bugzilla.mozilla.org/show_bug.cgi?id=636870
That doesn't seem to be the same bug that you're reporting here, but that could 
explain why we're not seeing these crashes.

Original comment by jacob.be...@gmail.com on 4 Nov 2011 at 1:29

GoogleCodeExporter commented 9 years ago
Sorry, I have to correct what I said on comment 3: we ALWAYS blacklist ANGLE on 
Optimus, regardless of what GPU is currently in use. Our only criterion to 
detect Optimus is the presence of nvumdshim.dll.

http://mxr.mozilla.org/mozilla-central/source/gfx/thebes/gfxWindowsPlatform.cpp#
978

Original comment by jacob.be...@gmail.com on 4 Nov 2011 at 1:32

GoogleCodeExporter commented 9 years ago
Oh, interesting.. Thanks, Benoit.  Most likely the same underlying issue for us 
as well.  Any idea why this is failing with ANGLE specifically? Presumably the 
Optimus gpu works fine otherwise?

Original comment by vange...@google.com on 4 Nov 2011 at 1:41

GoogleCodeExporter commented 9 years ago
I don't think we ever understood the reason for this crash. One possible 
theory, valid at least for us, is that we failed to realize that one of the two 
drivers (the intel and the Nvidia driver) was out of date, so we failed to 
blacklist when we should. We've had many cases where we were initially on the 
Intel GPU, with a recent driver, so we don't blacklist, and then it switches to 
the Nvidia GPU. Optimus is particularly sensitive to recentness of the Nvidia 
driver. Definitely <200.xx is a no-go, and in certain cases anything less than 
258.xx is bad. See
https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers

Original comment by jacob.be...@gmail.com on 4 Nov 2011 at 1:51

GoogleCodeExporter commented 9 years ago
... but no, I don't know why this problem happens with ANGLE specifically.

Original comment by jacob.be...@gmail.com on 4 Nov 2011 at 1:53

GoogleCodeExporter commented 9 years ago

Original comment by c...@chromium.org on 7 Dec 2013 at 4:07

GoogleCodeExporter commented 9 years ago

Original comment by geofflang@chromium.org on 10 Dec 2013 at 3:50

GoogleCodeExporter commented 9 years ago
Jamie, since you've looked into blacklisting Intel GPUs recently, could you 
tell if this is likely resolved? #6 suggests we just have to check both the 
Intel and NVIDIA driver version, and I vaguely recall that we do that now?

Original comment by c...@chromium.org on 21 May 2014 at 4:54

GoogleCodeExporter commented 9 years ago
I can confirm we still receive these crashes. I'm not sure if the blacklist 
rules allow for multiple devices.

Original comment by jmad...@chromium.org on 15 Jul 2014 at 3:22

GoogleCodeExporter commented 9 years ago

Original comment by c...@chromium.org on 6 May 2015 at 9:53