Closed Bug 1608235 Opened 6 months ago Closed 6 months ago

Crash in [@ egl::ValidateStreamConsumerGLTextureExternalAttribsNV]


(Core :: Graphics: WebRender, defect, P1)

Windows 10



Tracking Status
firefox-esr68 --- unaffected
firefox72 --- unaffected
firefox73 --- unaffected
firefox74 + fixed


(Reporter: marcia, Assigned: sotaro)




(Keywords: crash, regression)

Crash Data


(1 file, 1 obsolete file)

This bug is for crash report bp-1212a2ca-9f2c-43ec-9b91-253540200108.

Seen while looking at nightly crash stats - gpu crashes started in 20200107095722:

Possible regression range based on build id:

Top 10 frames of crashing thread:

0 libglesv2.dll egl::ValidateStreamConsumerGLTextureExternalAttribsNV gfx/angle/checkout/src/libANGLE/validationEGL.cpp:2634
1 libglesv2.dll EGL_StreamConsumerGLTextureExternalAttribsNV gfx/angle/checkout/src/libGLESv2/entry_points_egl_ext.cpp:785
2 xul.dll mozilla::wr::RenderDXGITextureHostOGL::EnsureLockable gfx/webrender_bindings/RenderD3D11TextureHostOGL.cpp
3 xul.dll mozilla::wr::RenderDXGITextureHostOGL::Lock gfx/webrender_bindings/RenderD3D11TextureHostOGL.cpp:208
4 xul.dll mozilla::wr::wr_renderer_lock_external_image gfx/webrender_bindings/RendererOGL.cpp:51
5 xul.dll webrender_bindings::bindings::{{impl}}::lock gfx/webrender_bindings/src/
6 xul.dll webrender::renderer::Renderer::render_impl gfx/wr/webrender/src/
7 xul.dll webrender::renderer::Renderer::render gfx/wr/webrender/src/
8 xul.dll webrender_bindings::bindings::wr_renderer_render gfx/webrender_bindings/src/
9 xul.dll mozilla::wr::RendererOGL::UpdateAndRender gfx/webrender_bindings/RendererOGL.cpp:151

@sotaro: This looks like a high frequency crash. I couldn't immediately spot a change that would cause this, but since you changed the logging in, I thought you might have some ideas here.

Blocks: wr-74
Flags: needinfo?(sotaro.ikeda.g)
Priority: -- → P1

OK, I take a look. I wonder if it might be related to device reset.

Assignee: nobody → sotaro.ikeda.g
Flags: needinfo?(sotaro.ikeda.g)

Crash happened at EGL_StreamConsumerGLTextureExternalAttribsNV(). It uses "gl::Context *context = gl::GetValidGlobalContext()" for validation check. The context seemed to be nullptr.

ANGLE has similar checks in the followings.

  • EGL_StreamConsumerGLTextureExternalKHR()
  • EGL_StreamConsumerAcquireKHR()
  • EGL_StreamConsumerReleaseKHR()
  • EGL_StreamConsumerGLTextureExternalAttribsNV()

They affects only to

  • RenderDXGITextureHostOGL::EnsureLockable()
  • RenderDXGIYCbCrTextureHostOGL::EnsureLockable()

When ANGLE detects a context lost, GetValidGlobalContext() returns nullptr.

The following does not handle a case that context is nullptr. All another functions seems to have a nullptr check.

Attached file Bug 1608235 - Add nullptr check (obsolete) —

Bug 1606046 is probably the change that brought us here, but this is a bug we should fix.

Blocks: 1606046
No longer blocks: webgl-ipc-refactor
No longer blocks: 1606046
Regressed by: 1606046
Pushed by
[ANGLE] Validate `context` before use. r=sotaro
Attachment #9121458 - Attachment is obsolete: true
Closed: 6 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla74
You need to log in before you can comment on or make changes to this bug.