chrome crashes with --mash --use-mus-in-renderer --use-chrome-gpu-command-buffer-in-mus |
|||
Issue descriptionchrome crashes with --mash --use-mus-in-renderer --use-chrome-gpu-command-buffer-in-mus gn args: use_goma = true is_component_build = true is_debug = true use_aura = true target_os = "chromeos" use_ozone = true ozone_platform_x11 = true ozone_auto_platforms = false ozone_platform = "x11" stack trace: [21137:21137:0614/133710:FATAL:thread_restrictions.cc(72)] Waiting is not allowed to be used on this thread to prevent jank and deadlock. #0 0x7fc443bcc05e base::debug::StackTrace::StackTrace() #1 0x7fc443c23fdc logging::LogMessage::~LogMessage() #2 0x7fc443d6f4cb base::ThreadRestrictions::AssertWaitAllowed() #3 0x7fc443d0c98f base::ConditionVariable::Wait() #4 0x7fc4369d134d mojo::edk::Waiter::Wait() #5 0x7fc4369790e4 mojo::edk::Core::WaitManyInternal() #6 0x7fc436978b68 mojo::edk::Core::Wait() #7 0x7fc4369d5a53 MojoWaitImpl #8 0x7fc43b65a03f MojoWait #9 0x7fc43612b40a mojo::Wait() #10 0x7fc43615c138 mojo::internal::SyncHandleRegistry::WatchAllHandles() #11 0x7fc436160094 mojo::internal::SyncHandleWatcher::SyncWatch() #12 0x7fc43612ad13 mojo::internal::Connector::SyncWatch() #13 0x7fc436153cd1 mojo::internal::Router::AcceptWithResponder() #14 0x7fc4361c5eb3 mus::mojom::GpuServiceProxy::EstablishGpuChannel() #15 0x7fc43611ded4 mus::GpuService::EstablishGpuChannel() #16 0x7fc435aa1c40 mus::GLES2Context::Initialize() #17 0x7fc435aa2211 mus::GLES2Context::CreateOffscreenContext() #18 0x7fc435aa0f42 mus::ContextProvider::BindToCurrentThread() #19 0x7fc43b9365f3 cc::OutputSurface::BindToClient() #20 0x7fc435aa6504 mus::OutputSurface::BindToClient() #21 0x7fc43babe80a cc::LayerTreeHostImpl::InitializeRenderer() #22 0x7fc43bb61249 cc::SingleThreadProxy::SetOutputSurface() #23 0x7fc43ba90f1a cc::LayerTreeHost::SetOutputSurface() #24 0x7fc4388c347d ui::Compositor::SetOutputSurface() #25 0x7fc435a90654 views::SurfaceContextFactory::CreateOutputSurface() #26 0x7fc4388c4399 ui::Compositor::RequestNewOutputSurface() #27 0x7fc43ba9138d cc::LayerTreeHost::RequestNewOutputSurface() #28 0x7fc43bb60e15 cc::SingleThreadProxy::RequestNewOutputSurface() #29 0x7fc43b86ab50 _ZN4base8internal15RunnableAdapterIMN2cc28ScrollbarAnimationControllerEFvvEE3RunIPS3_JEEEvOT_DpOT0_ #30 0x7fc43b86aaae _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRNS0_15RunnableAdapterIMN2cc28ScrollbarAnimationControllerEFvvEEENS_7WeakPtrIS6_EEJEEEvOT_T0_DpOT1_ #31 0x7fc43bb67fa1 _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0EEEENS0_9BindStateINS0_15RunnableAdapterIMN2cc17SingleThreadProxyEFvvEEEFvPS7_EJNS_7WeakPtrIS7_EEEEELb1EFvvEE3RunEPNS0_13BindStateBaseE #32 0x7fc43b86abae base::Callback<>::Run() #33 0x7fc43b86a829 base::CancelableCallback<>::Forward() #34 0x7fc43b86ab50 _ZN4base8internal15RunnableAdapterIMN2cc28ScrollbarAnimationControllerEFvvEE3RunIPS3_JEEEvOT_DpOT0_ #35 0x7fc43b86aaae _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRNS0_15RunnableAdapterIMN2cc28ScrollbarAnimationControllerEFvvEEENS_7WeakPtrIS6_EEJEEEvOT_T0_DpOT1_ #36 0x7fc43b86aa51 _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0EEEENS0_9BindStateINS0_15RunnableAdapterIMNS_18CancelableCallbackIFvvEEEKFvvEEEFvPKS8_EJNS_7WeakPtrIS8_EEEEELb1ES7_E3RunEPNS0_13BindStateBaseE #37 0x7fc443bb00ce base::Callback<>::Run() #38 0x7fc443bd189e base::debug::TaskAnnotator::RunTask() #39 0x7fc443c3ff91 base::MessageLoop::RunTask() #40 0x7fc443c40218 base::MessageLoop::DeferOrRunPendingTask() #41 0x7fc443c40472 base::MessageLoop::DoWork() #42 0x7fc443c568fc base::MessagePumpLibevent::Run() #43 0x7fc443c3fa0a base::MessageLoop::RunHandler() #44 0x7fc443cd88f4 base::RunLoop::Run() #45 0x7fc447f5b127 ChromeBrowserMainParts::MainMessageLoopRun() #46 0x7fc43d5794f9 content::BrowserMainLoop::RunMainMessageLoopParts() #47 0x7fc43d582a85 content::BrowserMainRunnerImpl::Run() #48 0x7fc43d573aa6 content::BrowserMain() #49 0x7fc43f073436 content::RunNamedProcessTypeMain() #50 0x7fc43f075435 content::ContentMainRunnerImpl::Run() #51 0x7fc43f0726e2 content::ContentMain() #52 0x7fc4448d360e ChromeMain #53 0x7fc4448d3572 main #54 0x7fc4316eef45 __libc_start_main #55 0x7fc4448d3454 <unknown>
,
Jun 14 2016
The problem is because a mojom sync method is called in browser UI thread. CL[1] fixes the issues by adding base::ThreadRestrictions::ScopedAllowWait in caller, but we can also fix it by adding ScopedAllowWait in the generated mojom proxy. John & Yuzhu, Do you think which way is better? Please advise. [1] https://codereview.chromium.org/2067833002/
,
Jun 14 2016
I don't think we want to make it too easy to make sync calls from the browser UI thread. Adding ScopedAllowWait in the generated mojom proxy is too permissive IMO. Explicitly allowing at each callsite seems better. WDYT? Thanks!
,
Jun 16 2016
Fixed in https://chromium.googlesource.com/chromium/src.git/+/ff6aef2ca17c3f114d52b5ba30b912d12f6c3a5b
,
Feb 26 2018
|
|||
►
Sign in to add a comment |
|||
Comment 1 by penghuang@chromium.org
, Jun 14 2016