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

Issue 771084 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Last visit > 30 days ago
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

Infinite loop on hiding control buttons

Project Member Reported by yoshiki@chromium.org, Oct 3 2017

Issue description

What steps will reproduce the problem?
(1) Show two arc notifications
(2) Close the first one by mouse 
(3) Close the second one by swipe

What is the expected result?
Chrome shouldn't crash

What happens instead?
Chrome crashes. It looks the stack trace is overflow.

 
Status: Assigned (was: Untriaged)
The infinite loop starts from ArcNotificationContentView::UpdateControlButtonsVisibility().


Stack trace:
#0  0x00005c5d5b27fcd2 in ash::Shell::GetAllRootWindows() () at ../../ash/shell.cc:310
#1  0x00005c5d5b2848c7 in ash::ShellPort::IsSystemModalWindowOpen() ()
    at ../../ash/shell_port.cc:86
#2  0x00005c5d5b2e2e5a in ash::SystemModalContainerEventFilter::OnEvent(ui::Event*) ()
    at ../../ash/wm/system_modal_container_event_filter.cc:21
#3  0x00005c5d59d3ca29 in ui::EventDispatcher::DispatchEventToEventHandlers(std::vector<ui::EventHandler*, std::allocator<ui::EventHandler*> >*, ui::Event*) ()
    at ../../ui/events/event_dispatcher.cc:191
#4  0x00005c5d59d3c6c5 in ui::EventDispatcher::ProcessEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:127
#5  0x00005c5d59d3c57c in ui::EventDispatcherDelegate::DispatchEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:86
#6  0x00005c5d5a55dae2 in aura::WindowEventDispatcher::DispatchMouseEnterOrExit(aura::Window*, ui::MouseEvent const&, ui::EventType) ()
    at ../../ui/aura/window_event_dispatcher.cc:303
#7  0x00005c5d5a55e3bc in aura::WindowEventDispatcher::DispatchMouseExitToHidingWindow(aura::Window*) () at ../../ui/aura/window_event_dispatcher.cc:178
#8  0x00005c5d5a5590e7 in aura::Window::SetVisible(bool) ()
    at ../../ui/aura/window.cc:716
#9  0x00005c5d59d3ca29 in ui::EventDispatcher::DispatchEventToEventHandlers(std::vector<ui::EventHandler*, std::allocator<ui::EventHandler*> >*, ui::Event*) ()
    at ../../ui/events/event_dispatcher.cc:191
#10 0x00005c5d59d3c6c5 in ui::EventDispatcher::ProcessEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:127
#11 0x00005c5d59d3c57c in ui::EventDispatcherDelegate::DispatchEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:86
#12 0x00005c5d5a55dae2 in aura::WindowEventDispatcher::DispatchMouseEnterOrExit(aura::Window*, ui::MouseEvent const&, ui::EventType) ()
    at ../../ui/aura/window_event_dispatcher.cc:303
#13 0x00005c5d5a55e3bc in aura::WindowEventDispatcher::DispatchMouseExitToHidingWindow(aura::Window*) () at ../../ui/aura/window_event_dispatcher.cc:178
#14 0x00005c5d5a5590e7 in aura::Window::SetVisible(bool) ()
    at ../../ui/aura/window.cc:716
#15 0x00005c5d59d3ca29 in ui::EventDispatcher::DispatchEventToEventHandlers(std::vector<ui::EventHandler*, std::allocator<ui::EventHandler*> >*, ui::Event*) ()
    at ../../ui/events/event_dispatcher.cc:191
#16 0x00005c5d59d3c6c5 in ui::EventDispatcher::ProcessEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:127
#17 0x00005c5d59d3c57c in ui::EventDispatcherDelegate::DispatchEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:86
#18 0x00005c5d5a55dae2 in aura::WindowEventDispatcher::DispatchMouseEnterOrExit(aura::Window*, ui::MouseEvent const&, ui::EventType) ()
    at ../../ui/aura/window_event_dispatcher.cc:303
#19 0x00005c5d5a55e3bc in aura::WindowEventDispatcher::DispatchMouseExitToHidingWindow(aura::Window*) () at ../../ui/aura/window_event_dispatcher.cc:178
#20 0x00005c5d5a5590e7 in aura::Window::SetVisible(bool) ()
    at ../../ui/aura/window.cc:716
#21 0x00005c5d59d3ca29 in ui::EventDispatcher::DispatchEventToEventHandlers(std::vector<ui::EventHandler*, std::allocator<ui::EventHandler*> >*, ui::Event*) ()
    at ../../ui/events/event_dispatcher.cc:191
#22 0x00005c5d59d3c6c5 in ui::EventDispatcher::ProcessEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:127
#23 0x00005c5d59d3c57c in ui::EventDispatcherDelegate::DispatchEvent(ui::EventTarget*, ui::Event*) () at ../../ui/events/event_dispatcher.cc:86
#24 0x00005c5d5a55dae2 in aura::WindowEventDispatcher::DispatchMouseEnterOrExit(aura::Window*, ui::MouseEvent const&, ui::EventType) ()
    at ../../ui/aura/window_event_dispatcher.cc:303
...
Project Member

Comment 3 by bugdroid1@chromium.org, Oct 5 2017

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

commit 88a32c820aea50c2f4adf0bb86a64b64a9f36e07
Author: yoshiki iguchi <yoshiki@chromium.org>
Date: Thu Oct 05 13:48:31 2017

Add a guard to prevent an infinite loop in arc notification

In some case, an infinite loop happens in ArcNotificationContent::
UpdateControlButtonVisiblity() method.
The logic is: UpdateControlButtonsVisiblity() tries hiding the control
buttons, it generates a mouse exit event, and the event handler calls
UpdateControlButtonsVisibility.

To prevent that, this patch adds the flag to prevent the calling the
method during the method.

Bug:  771084 
Test: manual
Change-Id: I03f9d5c00eb3c7f39bebebec03bfeb51616ca925
Reviewed-on: https://chromium-review.googlesource.com/697406
Reviewed-by: Yuichiro Hanada <yhanada@chromium.org>
Reviewed-by: Eliot Courtney <edcourtney@chromium.org>
Commit-Queue: Yoshiki Iguchi <yoshiki@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506715}
[modify] https://crrev.com/88a32c820aea50c2f4adf0bb86a64b64a9f36e07/ui/arc/notification/arc_notification_content_view.cc
[modify] https://crrev.com/88a32c820aea50c2f4adf0bb86a64b64a9f36e07/ui/arc/notification/arc_notification_content_view.h

Status: Fixed (was: Assigned)
Status: Verified (was: Fixed)
Not seeing this crash anymore, on M64 dev build (10124.0.0, 64.0.3265.0).

Sign in to add a comment