Issue metadata
Sign in to add a comment
|
Check failed: (*mdp_iter)->task_runner && (*mdp_iter)->task_runner->RunsTasksInCurrentSequence(). MemoryDumpProvider "ContextProviderCommandBuffer" attempted to unregister itself in a racy way. |
||||||||||||||||||||||||
Issue descriptionFiled by sheriff-o-matic@appspot.gserviceaccount.com on behalf of dalecurtis@chromium.org gpu_tests.depth_capture_integration_test.DepthCaptureIntegrationTest.DepthCapture_depthStreamToRGBAFloatTexture in depth_capture_tests failing on chromium.gpu/Android Release (Nexus 5X) Builders failed on: - Android Release (Nexus 5X): https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Android%20Release%20%28Nexus%205X%29 Seems flaky, will disable.
,
Oct 25
[FATAL:memory_dump_manager.cc(251)] 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. Stack Trace: RELADDR FUNCTION FILE:LINE 0000000003e39943 logging::LogMessage::~LogMessage() ../../base/logging.cc:592:29 0000000003ebe0ef base::trace_event::MemoryDumpManager::UnregisterDumpProviderInternal(base::trace_event::MemoryDumpProvider*, bool) ../../base/trace_event/memory_dump_manager.cc:250:5 0000000002b58543 ws::ContextProviderCommandBuffer::~ContextProviderCommandBuffer() ../../services/ws/public/cpp/gpu/context_provider_command_buffer.cc:90:58 0000000002b5865f ws::ContextProviderCommandBuffer::~ContextProviderCommandBuffer() ../../services/ws/public/cpp/gpu/context_provider_command_buffer.cc:79:63 v------> (anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0::operator()(scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>) const ../../base/memory/scoped_refptr.h:0:9 v------> void base::internal::FunctorTraits<(anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0, void>::Invoke<(anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)> >((anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0&&, scoped_refptr<viz::ContextProvider>&&, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>&&) ../../base/bind_internal.h:403:0 v------> void base::internal::InvokeHelper<false, void>::MakeItSo<(anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)> >((anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0&&, scoped_refptr<viz::ContextProvider>&&, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>&&) ../../base/bind_internal.h:616:0 v------> void base::internal::Invoker<base::internal::BindState<(anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)> >, void ()>::RunImpl<(anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0, std::__ndk1::tuple<scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)> >, 0ul, 1ul>((anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0&&, std::__ndk1::tuple<scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)> >&&, std::__ndk1::integer_sequence<unsigned long, 0ul, 1ul>) ../../base/bind_internal.h:689:0 000000000691a427 base::internal::Invoker<base::internal::BindState<(anonymous namespace)::PostContextProviderToCallback(scoped_refptr<base::SingleThreadTaskRunner>, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)>)::$_0, scoped_refptr<viz::ContextProvider>, base::OnceCallback<void (bool, scoped_refptr<viz::ContextProvider>)> >, void ()>::RunOnce(base::internal::BindStateBase*) ../../base/bind_internal.h:658:0 v------> base::OnceCallback<void ()>::Run() && ../../base/callback.h:99:12 0000000003e2988f base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) ../../base/debug/task_annotator.cc:99:0 0000000003e9106b base::sequence_manager::internal::ThreadControllerImpl::DoWork(base::sequence_manager::internal::ThreadControllerImpl::WorkType) ../../base/task/sequence_manager/thread_controller_impl.cc:196:23 v------> void base::internal::FunctorTraits<void (viz::GpuServiceImpl::*)(int), void>::Invoke<void (viz::GpuServiceImpl::*)(int), base::WeakPtr<viz::GpuServiceImpl>, int>(void (viz::GpuServiceImpl::*)(int), base::WeakPtr<viz::GpuServiceImpl>&&, int&&) ../../base/bind_internal.h:516:12 v------> void base::internal::InvokeHelper<true, void>::MakeItSo<void (viz::GpuServiceImpl::*)(int), base::WeakPtr<viz::GpuServiceImpl>, int>(void (viz::GpuServiceImpl::*&&)(int), base::WeakPtr<viz::GpuServiceImpl>&&, int&&) ../../base/bind_internal.h:636:0 v------> void base::internal::Invoker<base::internal::BindState<void (viz::GpuServiceImpl::*)(int), base::WeakPtr<viz::GpuServiceImpl>, int>, void ()>::RunImpl<void (viz::GpuServiceImpl::*)(int), std::__ndk1::tuple<base::WeakPtr<viz::GpuServiceImpl>, int>, 0ul, 1ul>(void (viz::GpuServiceImpl::*&&)(int), std::__ndk1::tuple<base::WeakPtr<viz::GpuServiceImpl>, int>&&, std::__ndk1::integer_sequence<unsigned long, 0ul, 1ul>) ../../base/bind_internal.h:689:0 00000000025584c3 base::internal::Invoker<base::internal::BindState<void (viz::GpuServiceImpl::*)(int), base::WeakPtr<viz::GpuServiceImpl>, int>, void ()>::RunOnce(base::internal::BindStateBase*) ../../base/bind_internal.h:658:0 v------> base::OnceCallback<void ()>::Run() && ../../base/callback.h:99:12 0000000003e2988f base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) ../../base/debug/task_annotator.cc:99:0 0000000003e440db base::MessageLoop::RunTask(base::PendingTask*) ../../base/message_loop/message_loop.cc:547:46 v------> base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) ../../base/message_loop/message_loop.cc:558:5 0000000003e443fb base::MessageLoop::DoWork() ../../base/message_loop/message_loop.cc:630:0 0000000003e47e9b base::MessagePumpDefault::Run(base::MessagePump::Delegate*) ../../base/message_loop/message_pump_default.cc:37:31 0000000003e43bcb base::MessageLoop::Run(bool) ../../base/message_loop/message_loop.cc:499:12 0000000003e6846b base::RunLoop::Run() ../../base/run_loop.cc:102:14 00000000069e75f3 content::RendererMain(content::MainFunctionParams const&) ../../content/renderer/renderer_main.cc:202:16 0000000003b76f47 content::ContentMainRunnerImpl::Run(bool) ../../content/app/content_main_runner_impl.cc:920:10 00000000053eddfb service_manager::Main(service_manager::MainParams const&) ../../services/service_manager/embedder/main.cc:472:29 v------> content::JNI_ContentMain_Start(_JNIEnv*, base::android::JavaParamRef<_jclass*> const&, unsigned char) ../../content/app/android/content_main.cc:53:10 0000000003b762bb Java_org_chromium_content_app_ContentMain_nativeStart gen/content/public/android/content_jni_headers/content/jni/ContentMain_jni.h:48:0 000000000131f603 <UNKNOWN> /data/app/org.chromium.chrome-1/oat/arm64/base.odex 000000000131f537 <UNKNOWN> /data/app/org.chromium.chrome-1/oat/arm64/base.odex 0000000001b4ec33 <UNKNOWN> /data/app/org.chromium.chrome-1/oat/arm64/base.odex 0000000000d716cb <UNKNOWN> /data/app/org.chromium.chrome-1/oat/arm64/base.odex 0000000001f01e67 <UNKNOWN> /data/dalvik-cache/arm64/system@framework@boot.oat
,
Oct 25
+viz folk since looks like a shutdown race when unregistering the memory dump provider.
,
Oct 25
,
Oct 25
+danakj who added the unregister in 2871a8c3516e495b9e9acedfe9c0fd43dc9b7b06
,
Oct 25
Looks like https://cs.chromium.org/chromium/src/content/renderer/media/media_factory.cc?rcl=fdf87103b6d01dc8b7fa3d7120fa03a53e0b1864&l=235 is posting a callback and destroying it on a thread unsafely.
,
Oct 25
,
Oct 25
,
Oct 26
This looks like a similar problem to https://crbug.com/884589
,
Oct 26
So I believe https://chromium-review.googlesource.com/c/chromium/src/+/1303178 fixes this case, but I think that the contract between the ContextProviderCommandBuffer and the MemoryDumpProvider should be reviewed, as the ContextProviderCommandBuffer allows for destruction on either the main thread or the thread it is bound to, where as from what I can tell the MemoryDumpProvider requires to be strictly called from the thread the ContextProviderCommandBuffer is called from. I've opened a bug about this here: https://crbug.com/899395
,
Oct 29
,
Oct 29
This has been fixed by https://chromium-review.googlesource.com/c/chromium/src/+/1304068, but I'm doing follow up work (taking care of dereferencing render_thread_impl's |video_frame_vompositor_context_provider_|) in https://chromium-review.googlesource.com/c/chromium/src/+/1303178
,
Oct 29
,
Oct 30
It looks like the fix for this was done under Issue 898842 so I'm duplicating this into the other bug so we have one place to look at for bugs dependent on this.
,
Nov 6
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b6eb9cd83cc8490fa24259c43269103eb134aa38 commit b6eb9cd83cc8490fa24259c43269103eb134aa38 Author: CJ DiMeglio <lethalantidote@chromium.org> Date: Tue Nov 06 23:44:01 2018 Ensures dereference of |video_frame_compositor_context_provider_| on proper thread. This CL makes sure that the |video_frame_compositor_context_provider_| and references to it get dereferenced to the thread it is bound to (in this case, the |video_frame_compositor_task_runner_| Bug: 898989 Change-Id: I98654bb5a6b29a43a384ce0308b4b97d575903a0 Reviewed-on: https://chromium-review.googlesource.com/c/1303178 Commit-Queue: CJ DiMeglio <lethalantidote@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Cr-Commit-Position: refs/heads/master@{#605878} [modify] https://crrev.com/b6eb9cd83cc8490fa24259c43269103eb134aa38/content/renderer/media/media_factory.cc [modify] https://crrev.com/b6eb9cd83cc8490fa24259c43269103eb134aa38/content/renderer/render_thread_impl.cc [modify] https://crrev.com/b6eb9cd83cc8490fa24259c43269103eb134aa38/content/renderer/render_thread_impl.h |
|||||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||||
Comment 1 by dalecur...@chromium.org
, Oct 25