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

Issue 690970 link

Starred by 2 users

Issue metadata

Status: Archived
Owner:
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

Mustash: DCHECK failure in FATAL:surface_manager.cc(

Project Member Reported by mfomitchev@chromium.org, Feb 10 2017

Issue description

Reproducible in chrome --mash on Ubuntu by opening the app list, closing it, and then opening it again.

[17287:17302:0210/114335.470943:684467890026:FATAL:surface_manager.cc(507)] Check failed: children[i] != child_frame_sink_id. 
#0 0x7f65c653dac1 __interceptor_backtrace
#1 0x7f65c417210c base::debug::StackTrace::StackTrace()
#2 0x7f65c41e879e logging::LogMessage::~LogMessage()
#3 0x7f65b63727a8 cc::SurfaceManager::RegisterFrameSinkHierarchy()
#4 0x7f65a6ff9f6a cc::mojom::MojoCompositorFrameSinkPrivateStubDispatch::Accept()
#5 0x7f65c4789923 mojo::InterfaceEndpointClient::HandleValidatedMessage()
#6 0x7f65c4787f08 mojo::FilterChain::Accept()
#7 0x7f65c478d9d8 mojo::InterfaceEndpointClient::HandleIncomingMessage()
#8 0x7f65c47ad749 mojo::internal::MultiplexRouter::ProcessIncomingMessage()
#9 0x7f65c47ac078 mojo::internal::MultiplexRouter::Accept()
#10 0x7f65c4787f08 mojo::FilterChain::Accept()
#11 0x7f65c47796e3 mojo::Connector::ReadSingleMessage()
#12 0x7f65c477ab5b mojo::Connector::OnHandleReadyInternal()
#13 0x7f65c473f4d8 mojo::Watcher::OnHandleReady()
#14 0x7f65c473f931 _ZN4base8internal13FunctorTraitsIMN4mojo7WatcherEFvjEvE6InvokeIRKNS_7WeakPtrIS3_EEJRKjEEEvS5_OT_DpOT0_
#15 0x7f65c417444f base::debug::TaskAnnotator::RunTask()
#16 0x7f65c421b87a base::MessageLoop::RunTask()
#17 0x7f65c421df80 base::MessageLoop::DoWork()
#18 0x7f65c42277a3 base::MessagePumpDefault::Run()
#19 0x7f65c421af17 base::MessageLoop::RunHandler()
#20 0x7f65c42de240 base::RunLoop::Run()
#21 0x7f65c43b09a0 base::Thread::Run()
#22 0x7f65c43b1a4f base::Thread::ThreadMain()
#23 0x7f65c4394423 base::(anonymous namespace)::ThreadFunc()
#24 0x7f65a587f184 start_thread
#25 0x7f65a426a37d clone
 
Status: Started (was: Assigned)
There are two problems here. First, we are never calling SurfaceFactory::UnregisterFrameSinkHierachy() when we destroy a CompositorFrameSink. We recreate a CompositorFrameSink with the same FrameSinkId and try to register it a second time. That hits the DCHECK above.

The second problem is there are two ServerWindows that correspond to MojoCompositorFrameSinks. Only one of the ServerWindows ever gets destroyed and the second one is just orphaned off screen. The same FrameSinkId gets reused which causes more problems even if we do cleanup correctly.

The fact that the orphaned ServerWindow stays alive forever is also a bug but might be because the app list is hosted by Chrome.
The second problem isn't actually a problem, at least in terms of cleaning up the FrameSinkId hierarchy. As long as we unregister the FrameSinkId correctly when unparenting ServerWindows SurfaceManager state will be correct.

It might be a bug that the ServerWindow stays around despite not being displayed but that is separate issue.
Cc: bruthig@chromium.org kylec...@chromium.org sky@chromium.org danakj@chromium.org rjkroege@chromium.org sadrul@chromium.org enne@chromium.org
 Issue 673030  has been merged into this issue.
Project Member

Comment 5 by bugdroid1@chromium.org, Feb 14 2017

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

commit 509840116ed907fb1e466c7ca0a35eb76f0eb6d5
Author: kylechar <kylechar@chromium.org>
Date: Tue Feb 14 19:13:37 2017

Remove FrameSinkId hierarchy when unparenting ServerWindow.

We need to change the FrameSinkId heirarchy along with ServerWindow
hierarchy. We were missing a case when we unparent a ServerWindow.

This caused a crash in app list because we never unregister the
FrameSinkId heirarchy. There is a DCHECK that we don't register the same
hierarchy twice and when reopening the app list that DCHECK was hit.

BUG= 690970 

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

[modify] https://crrev.com/509840116ed907fb1e466c7ca0a35eb76f0eb6d5/services/ui/ws/server_window.cc

Status: Fixed (was: Started)
For the ServerWindow that doesn't get destroyed I've filed https://bugs.chromium.org/p/chromium/issues/detail?id=693194. Otherwise this is fixed.

Comment 7 by dchan@google.com, Apr 17 2017

Labels: VerifyIn-59

Comment 8 by dchan@google.com, May 30 2017

Labels: VerifyIn-60

Comment 9 by dchan@chromium.org, Aug 1 2017

Labels: VerifyIn-61

Comment 10 by dchan@chromium.org, Oct 14 2017

Status: Archived (was: Fixed)
Components: -Internals>MUS Internals>Services>WindowService

Sign in to add a comment