New issue
Advanced search Search tips

Issue 607271 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

|ShelfDelegaeMus::app_id_to_shelf_id_| keeps growing

Project Member Reported by sadrul@chromium.org, Apr 27 2016

Issue description

It looks like we never remove any entry from |ShelfDelegaeMus::app_id_to_shelf_id_|. This means it continually grows, and also leads to flaky crashes like this:


[32634:32634:0427/145613:1639352612373:FATAL:shelf_delegate_mus.cc(333)] Check failed: item_delegate.
#0 0x7f5ea30e593e base::debug::StackTrace::StackTrace()
#1 0x7f5ea313b5fc logging::LogMessage::~LogMessage()
#2 0x7f5e8a48d0e0 ash::sysui::ShelfDelegateMus::OnUserWindowAdded()
#3 0x7f5e8a60e468 mash::wm::mojom::UserWindowObserverStub::Accept()
#4 0x7f5e8a5a39b6 mojo::internal::Router::HandleMessageInternal()
#5 0x7f5e8a5a2228 mojo::internal::Router::HandleIncomingMessage()
#6 0x7f5e8a5a1f31 mojo::internal::Router::HandleIncomingMessageThunk::Accept()
#7 0x7f5e8a60f2f2 mash::wm::mojom::UserWindowObserverRequestValidator::Accept()
#8 0x7f5e8a59183d mojo::internal::MessageHeaderValidator::Accept()
#9 0x7f5e8a582ec8 mojo::internal::Connector::ReadSingleMessage()
#10 0x7f5e8a583a2c mojo::internal::Connector::ReadAllAvailableMessages()
#11 0x7f5e8a583953 mojo::internal::Connector::OnHandleReadyInternal()
#12 0x7f5e8a58382b mojo::internal::Connector::OnWatcherHandleReady()
#13 0x7f5e8a584800 _ZN4base8internal15RunnableAdapterIMN4mojo8internal9ConnectorEFvjEE3RunIJjEEEvPS4_DpOT_
#14 0x7f5e8a584751 _ZN4base8internal12InvokeHelperILb0EvNS0_15RunnableAdapterIMN4mojo8internal9ConnectorEFvjEEEE8MakeItSoIJPS5_jEEEvS8_DpOT_
#15 0x7f5e8a5846fd _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0EEEENS0_9BindStateINS0_15RunnableAdapterIMN4mojo8internal9ConnectorEFvjEEEFvPS8_jEJNS0_17UnretainedWrapperIS8_EEEEENS0_12InvokeHelperILb0EvSB_EEFvjEE3RunEPNS0_13BindStateBaseEOj
#16 0x7f5e8a5aae02 base::Callback<>::Run()
#17 0x7f5e8a5b0021 mojo::Watcher::OnHandleReady()
#18 0x7f5e8a584c20 _ZN4base8internal15RunnableAdapterIMN4mojo8internal9ConnectorEFvjEE3RunIJRKjEEEvPS4_DpOT_
#19 0x7f5e8a584b75 _ZN4base8internal12InvokeHelperILb1EvNS0_15RunnableAdapterIMN4mojo8internal9ConnectorEFvjEEEE8MakeItSoINS_7WeakPtrIS5_EEJRKjEEEvS8_T_DpOT0_
#20 0x7f5e8a5b0738 _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0ELm1EEEENS0_9BindStateINS0_15RunnableAdapterIMN4mojo7WatcherEFvjEEEFvPS7_jEJRNS_7WeakPtrIS7_EERjEEENS0_12InvokeHelperILb1EvSA_EEFvvEE3RunEPNS0_13BindStateBaseE
#21 0x7f5ea30c98ae base::Callback<>::Run()
#22 0x7f5ea30eb0ee base::debug::TaskAnnotator::RunTask()
#23 0x7f5ea3156d91 base::MessageLoop::RunTask()
#24 0x7f5ea3157018 base::MessageLoop::DeferOrRunPendingTask()
#25 0x7f5ea31571e2 base::MessageLoop::DoWork()
#26 0x7f5ea3167064 base::MessagePumpDefault::Run()
#27 0x7f5ea315680a base::MessageLoop::RunHandler()
#28 0x7f5ea31edf94 base::RunLoop::Run()
#29 0x7f5e8a5bd5a2 shell::ApplicationRunner::Run()
#30 0x7f5e8a5bd66c shell::ApplicationRunner::Run()
#31 0x7f5e8a482012 MojoMain
#32 0x0000065f92ff shell::RunNativeApplication()
#33 0x0000065f245e shell::(anonymous namespace)::RunNativeLibrary()
#34 0x000001998e55 _ZN4base8internal15RunnableAdapterIPFvPN7content15RenderFrameHostEN4mojo16InterfaceRequestIN16password_manager5mojom17CredentialManagerEEEEE3RunIJRKS4_SA_EEEvDpOT_
#35 0x0000019993aa _ZN4base8internal12InvokeHelperILb0EvNS0_15RunnableAdapterIPFvPN7content15RenderFrameHostEN4mojo16InterfaceRequestIN6device3usb13DeviceManagerEEEEEEE8MakeItSoIJRKS5_SB_EEEvSE_DpOT_
#36 0x0000065f3569 _ZN4base8internal7InvokerINS_13IndexSequenceIJLm0EEEENS0_9BindStateINS0_15RunnableAdapterIPFvPvN4mojo16InterfaceRequestIN5shell5mojom11ShellClientEEEEEESD_JRS6_EEENS0_12InvokeHelperILb0EvSF_EEFvSC_EE3RunEPNS0_13BindStateBaseEOSC_
#37 0x000000941e23 base::Callback<>::Run()
#38 0x0000065f8b18 shell::ChildProcessMain()
#39 0x0000065f2288 shell::ChildProcessMain()
#40 0x00000174d4fe RunMashBrowserTests()
#41 0x0000007c80dd main
#42 0x7f5e8d042ec5 __libc_start_main
#43 0x0000007c7fe4 <unknown>


I added a DCHECK(item_delegate) to shelf_delegate_mus.cc:333. Without that, the actual crash happens in ShelfDelegateItemMus::AddWindow(), since |this| is null.

This crash sometimes shows up when running browser-tests in mash.
 

Comment 1 by sadrul@chromium.org, Apr 27 2016

Components: MUS
Labels: -Pri-3 Pri-2
Project Member

Comment 2 by bugdroid1@chromium.org, Apr 28 2016

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

commit 4875d4b179e246bdc4a903bc3d20c831727eecca
Author: msw <msw@chromium.org>
Date: Thu Apr 28 03:32:40 2016

Fix mash shelf id mapping and removal.

Add ShelfID to app_id mapping, to complement the inverse map.
(these are 1-to-1 mappings, but two maps eases usage)

Remove mappings when shelf items are removed.
Implement the ShelfDelegate interface mapping functions.

TODO: Add unit/shell testing of ShelfDelegateMus.

BUG= 607271 
TEST=|ShelfDelegaeMus::app_id_to_shelf_id_| shrinks as appropriate.
R=sadrul@chromium.org,sky@chromium.org

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

[modify] https://crrev.com/4875d4b179e246bdc4a903bc3d20c831727eecca/ash/mus/shelf_delegate_mus.cc
[modify] https://crrev.com/4875d4b179e246bdc4a903bc3d20c831727eecca/ash/mus/shelf_delegate_mus.h

Comment 3 by msw@chromium.org, Apr 28 2016

Status: Fixed (was: Assigned)
Should be fixed, let me know if not.
Components: -MUS Internals>Services>WindowService

Sign in to add a comment