New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 650123 link

Starred by 1 user

Issue metadata

Status: Started
Owner:
OOO until 2019-01-24
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug

Blocked on:
issue 483282



Sign in to add a comment

conformance2/buffers/getBufferSubData.html flaky on Linux NVIDIA

Project Member Reported by kbr@chromium.org, Sep 26 2016

Issue description

The WebGL 2.0 conformance test conformance2/buffers/getBufferSubData.html is flaky on Linux. Here's an example passing build:

https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28NVIDIA%29/builds/43900

and several failing builds:

https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28NVIDIA%29/builds/43901
https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28NVIDIA%29/builds/43899
https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28NVIDIA%29/builds/43892
https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28NVIDIA%29/builds/43886
https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28NVIDIA%29/builds/43885

It looks like some state isn't being properly saved and restored in Chrome's virtual context implementation so some OpenGL call in the command buffer service is causing an OpenGL error to be raised. Here's the stack trace:

WebglConformance_conformance2_buffers_getBufferSubData (gpu_tests.webgl_conformance_integration_test.WebGLConformanceIntegrationTest) ... [16333:16333:0925/135315:FATAL:gl_context.cc(216)] Check failed: error == GL_NO_ERROR || error == GL_CONTEXT_LOST_KHR. GL error was: 1281
#0 0x7f4171f3b6ae base::debug::StackTrace::StackTrace()
#1 0x7f4171f52cfb logging::LogMessage::~LogMessage()
#2 0x7f4172991588 gl::GLContext::MakeVirtuallyCurrent()
#3 0x7f4176009c74 gpu::GLContextVirtual::MakeCurrent()
#4 0x7f417602b1f7 gpu::gles2::GLES2DecoderImpl::MakeCurrent()
#5 0x7f417580da8a gpu::GpuCommandBufferStub::MakeCurrent()
#6 0x7f417580d231 gpu::GpuCommandBufferStub::OnMessageReceived()
#7 0x7f41756d0529 IPC::MessageRouter::RouteMessage()
#8 0x7f417580943e gpu::GpuChannel::HandleMessageHelper()
#9 0x7f41758091f2 gpu::GpuChannel::HandleMessage()
#10 0x7f4171fcea34 base::debug::TaskAnnotator::RunTask()
#11 0x7f4171f5a4f5 base::MessageLoop::RunTask()
#12 0x7f4171f5a808 base::MessageLoop::DeferOrRunPendingTask()
#13 0x7f4171f5ab4b base::MessageLoop::DoWork()
#14 0x7f4171f5c549 base::MessagePumpGlib::Run()
#15 0x7f4171f59ff1 base::MessageLoop::RunHandler()
#16 0x7f4171f7b970 base::RunLoop::Run()
#17 0x7f4173e63aac content::GpuMain()
#18 0x7f4171b315fe content::RunNamedProcessTypeMain()
#19 0x7f4171b3205b content::ContentMainRunnerImpl::Run()
#20 0x7f4171b308f0 content::ContentMain()
#21 0x7f4170371d5d ChromeMain
#22 0x7f4168e49ec5 __libc_start_main
#23 0x7f4170371c31 <unknown>

cwallez: any advice on what saving/restoring of OpenGL state ANGLE is doing related to glMapBufferRange / glUnmapBuffer would be greatly appreciated.

 
We don't do any specific state restoring for mapping buffers. Could it be that we try to map and already mapped buffer? If we can reproduce locally, enabling GL_DEBUG_OUTPUT would help.
Agree with Corentin - it's essential debug output is turned on and visible in the log. The error above is INVALID_VALUE, but it's not clear what it might be coming from.
Project Member

Comment 3 by bugdroid1@chromium.org, Sep 26 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/42f4838225cca9b5516c5046bae04d284bb1ada4

commit 42f4838225cca9b5516c5046bae04d284bb1ada4
Author: kbr <kbr@chromium.org>
Date: Mon Sep 26 17:26:56 2016

Suppress flaky getBufferSubData failures on Linux without ANGLE.

BUG=650123
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
TBR=zmo@chromium.org
NOTRY=true

Review-Url: https://codereview.chromium.org/2368883002
Cr-Commit-Position: refs/heads/master@{#420919}

[modify] https://crrev.com/42f4838225cca9b5516c5046bae04d284bb1ada4/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py

Comment 4 by kbr@chromium.org, Sep 26 2016

Cc: jmad...@chromium.org
I'm not sure how feasible it is to enable more logging for the WebGL 2.0 suite. The logs are already enormous. If you have a concrete suggestion about what configuration to change on the bots we can see how it'll affect the log sizes locally before enabling it on the bots.

I suspect that we're leaving the buffer mapped when switching virtual contexts, causing another context to produce an error later during a draw call.

Comment 5 by kbr@chromium.org, Sep 30 2016

Owner: kbr@chromium.org
Status: Started (was: Untriaged)
Kai discovered while prototyping getBufferSubDataAsync that the range check validation was completely missing for MapBufferRange in the command buffer. It's unclear how this test ever passed. Thanks Kai for picking this up. Being fixed in https://codereview.chromium.org/2380683003/ .

This may still be an issue (10/03):

https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28NVIDIA%29/builds/44028
trace.txt
3.8 KB View Download

Comment 8 by kbr@chromium.org, Oct 4 2016

Blocking: -483282

Comment 9 by kbr@chromium.org, Oct 4 2016

Blockedon: 483282
Components: -Internals>GPU>WebGL

Sign in to add a comment