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

Issue 826539 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug
Hotlist-MemoryInfra



Sign in to add a comment

ContextProviderCommandBuffer unregister itself in a racy way from MemoryDumpProvider

Project Member Reported by emir...@chromium.org, Mar 27 2018

Issue description

This issue came up while enabling a feature in WebRtcCaptureFromElementBrowserTest.CaptureFromOpaqueCanvas2DHandlesContextLoss and WebRtcCaptureFromElementBrowserTest.CaptureFromCanvas2DHandlesContextLoss tests. This CL just enables use of GpuMemoryBufferVideoFrame for real-time video from WebRTC, i.e. Hangouts.
https://chromium-review.googlesource.com/c/chromium/src/+/963642
[1:1:0327/094048.940675:FATAL:memory_dump_manager.cc(426)] Check failed: (*mdp_iter)->task_runner && (*mdp_iter)->task_runner->RunsTasksInCurrentSequence(). MemoryDumpProvider "ContextProviderCommandBuffer" attempted to unregister itself in a racy way. Please file a crbug.
#0 0x000002e2b9dc base::debug::StackTrace::StackTrace()
#1 0x000002e3f4ab logging::LogMessage::~LogMessage()
#2 0x000002e9be3a base::trace_event::MemoryDumpManager::UnregisterDumpProviderInternal()
#3 0x00000156623e ui::ContextProviderCommandBuffer::~ContextProviderCommandBuffer()
#4 0x00000156645e ui::ContextProviderCommandBuffer::~ContextProviderCommandBuffer()
#5 0x000005c32afd content::GpuVideoAcceleratorFactoriesImpl::ReleaseContextProvider()
#6 0x000002e2c1b4 base::debug::TaskAnnotator::RunTask()
#7 0x0000021a0664 blink::scheduler::internal::ThreadControllerImpl::DoWork()
#8 0x000000f26afb _ZN4base8internal7InvokerINS0_9BindStateIMN5media26AudioDebugRecordingManagerEFvjEJNS_7WeakPtrIS4_EEjEEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#9 0x000002e2c1b4 base::debug::TaskAnnotator::RunTask()
#10 0x000002ed4359 base::internal::IncomingTaskQueue::RunTask()
#11 0x000002e4843b base::MessageLoop::RunTask()
#12 0x000002e487da base::MessageLoop::DeferOrRunPendingTask()
#13 0x000002e48a3c base::MessageLoop::DoWork()
#14 0x000002e49c36 base::MessagePumpDefault::Run()
#15 0x000002e47d69 base::MessageLoop::Run()
#16 0x000002e6aae9 base::RunLoop::Run()
#17 0x000005acebed content::RendererMain()

These test have earlier surfaced some other bugs, see  issue 820437  and  issue 812186 . This one looks different but I wanted to get your opinion as it might be related to earlier issues. GpuVideoAcceleratorFactoriesImpl holds a scoped_refptr<ui::ContextProviderCommandBuffer> and releases on main thread. We also try to unregister MemoryDumpManager() which was registered on context_thread. What this CL does different than before is that it triggers the use of GpuVideoAcceleratorFactoriesImpl for video use case.
https://cs.chromium.org/chromium/src/services/ui/public/cpp/gpu/context_provider_command_buffer.cc?type=cs&l=426
https://cs.chromium.org/chromium/src/base/trace_event/memory_dump_manager.cc?rcl=ac16acd7553a733b4b42ebd53e5cda8f39c04c4d&l=416

kylechar@ can you help with triage? 

 
Cc: -dcasta...@chromium.org kylec...@chromium.org
Labels: OS-Chrome
Owner: dcasta...@chromium.org
Cc: kbr@chromium.org khushals...@chromium.org
Labels: Hotlist-PixelWrangler
This flake is showing up on the bots in WebGL tests (which are very complex and may hit race conditions more than most tests):

https://ci.chromium.org/buildbot/chromium.gpu.fyi/Win10%20FYI%20Release%20%28NVIDIA%29/528

See failing step: webgl2_conformance_gl_tests on NVIDIA GPU on Windows on Windows-10

https://chromium-swarm.appspot.com/task?id=3c7960a87d3f9310&refresh=10&show_raw=1

Same trace. CC'ing GPU pixel wrangler.

Comment 3 by kbr@chromium.org, Mar 29 2018

Cc: erikc...@chromium.org
Components: Internals>Instrumentation>Memory
Labels: -Pri-2 Pri-1
Increasing priority to P1. Our tests must be reliable, and this indicates a real bug in the product. Who can take this?

Owner: emir...@chromium.org
Emircan has been working on it: crrev.com/c/984438
Project Member

Comment 5 by bugdroid1@chromium.org, Mar 29 2018

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

commit b0f69fcfb9dc32b5dd037dc6b99c968225d870d6
Author: Emircan Uysaler <emircan@chromium.org>
Date: Thu Mar 29 03:23:53 2018

Release ContextProviderCommandBuffer reference on media thread

GpuVideoAcceleratorFactoriesImpl calls BindToCurrentThread() on media task
runner, so releasing the reference should also happen there to avoid race
conditions. crrev.com/c/959432 introduced the regression, since we took
care of initialization, but we didn't take care of destruction.

Bug:  826539 , 580386
Change-Id: I2fff505b445bca7ff38343f6f1e5d3035a06714e
Reviewed-on: https://chromium-review.googlesource.com/984438
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Daniele Castagna <dcastagna@chromium.org>
Commit-Queue: Emircan Uysaler <emircan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546725}
[modify] https://crrev.com/b0f69fcfb9dc32b5dd037dc6b99c968225d870d6/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
[modify] https://crrev.com/b0f69fcfb9dc32b5dd037dc6b99c968225d870d6/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h
[modify] https://crrev.com/b0f69fcfb9dc32b5dd037dc6b99c968225d870d6/content/renderer/render_thread_impl.cc

A bit late, seeing as you've got the fix already, but  issue 820437  would be unrelated.
Status: Fixed (was: Assigned)

Comment 8 by kbr@chromium.org, Mar 29 2018

Thanks Emircan for your quick fix!

Sign in to add a comment