Issue description
Description #1 (tapted@chromium.org, Sep 29 2016)
Description #2 (tapted@chromium.org, Sep 29 2016)
Chrome Version : 55.0.2868.3
OS Version: OS X 10.11.6
Steps: Go to http://permisison.site , click "fullscreen" and trace.
The common parts of the stacks are:
10 libchrome_dll.dylib 0x00000001104e10c1 FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
11 libchrome_dll.dylib 0x00000001104e1801 FullscreenController::EnterFullscreenModeForTab(content::WebContents*, GURL const&) + 561
12 libchrome_dll.dylib 0x000000011047959f Browser::EnterFullscreenModeForTab(content::WebContents*, GURL const&) + 79
13 libcontent.dylib 0x0000000124c1fbf9 content::WebContentsImpl::EnterFullscreenMode(GURL const&) + 169
14 libcontent.dylib 0x0000000123fe3fc6 content::RenderFrameHostImpl::OnToggleFullscreen(bool) + 1094
15 libcontent.dylib 0x0000000124005fbe void base::DispatchToMethodImpl<content::RenderFrameHostImpl*, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&, 0ul>(content::RenderFrameHostImpl* const&, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&&&, base::IndexSequence<0ul>) + 158
16 libcontent.dylib 0x0000000124005f19 void base::DispatchToMethod<content::RenderFrameHostImpl*, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&>(content::RenderFrameHostImpl* const&, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&&&) + 73
17 libcontent.dylib 0x0000000124005ead void IPC::DispatchToMethod<content::RenderFrameHostImpl, void (content::RenderFrameHostImpl::*)(bool), void, std::__1::tuple<bool> >(content::RenderFrameHostImpl*, void (content::RenderFrameHostImpl::*)(bool), void*, std::__1::tuple<bool> const&) + 93
18 libcontent.dylib 0x0000000123fe3b1b bool IPC::MessageT<FrameHostMsg_ToggleFullscreen_Meta, std::__1::tuple<bool>, void>::Dispatch<content::RenderFrameHostImpl, content::RenderFrameHostImpl, void, void (content::RenderFrameHostImpl::*)(bool)>(IPC::Message const*, content::RenderFrameHostImpl*, content::RenderFrameHostImpl*, void*, void (content::RenderFrameHostImpl::*)(bool)) + 475
19 libcontent.dylib 0x0000000123fd5e87 content::RenderFrameHostImpl::OnMessageReceived(IPC::Message const&) + 9367
Then the first stack is
3 libchrome_dll.dylib 0x0000000110927d7b ExclusiveAccessBubbleViews::ExclusiveAccessBubbleViews(ExclusiveAccessBubbleViewsContext*, GURL const&, ExclusiveAccessBubbleType) + 43
4 libchrome_dll.dylib 0x0000000110b3ad10 ExclusiveAccessController::Show() + 336
5 libchrome_dll.dylib 0x0000000110b5c719 -[BrowserWindowController(Private) showFullscreenExitBubbleIfNecessary] + 249
6 libchrome_dll.dylib 0x0000000110b5d066 -[BrowserWindowController(Private) windowDidEnterFullScreen:] + 1270
7 libchrome_dll.dylib 0x0000000110b5c100 -[BrowserWindowController(Private) enterImmersiveFullscreen] + 1344
8 libchrome_dll.dylib 0x0000000110b553ee -[BrowserWindowController(Fullscreen) enterWebContentFullscreen] + 174
9 libchrome_dll.dylib 0x0000000110b3c4a9 ExclusiveAccessController::EnterFullscreen(GURL const&, ExclusiveAccessBubbleType) + 233
10 libchrome_dll.dylib 0x00000001104e2a03 FullscreenController::EnterFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 387
11 libchrome_dll.dylib 0x00000001104e10c1 FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
Second stack is
3 libchrome_dll.dylib 0x0000000110927d7b ExclusiveAccessBubbleViews::ExclusiveAccessBubbleViews(ExclusiveAccessBubbleViewsContext*, GURL const&, ExclusiveAccessBubbleType) + 43
4 libchrome_dll.dylib 0x0000000110b3ad10 ExclusiveAccessController::Show() + 336
5 libchrome_dll.dylib 0x0000000110b5c719 -[BrowserWindowController(Private) showFullscreenExitBubbleIfNecessary] + 249
6 libchrome_dll.dylib 0x0000000110b54ec6 -[BrowserWindowController(Fullscreen) updateFullscreenExitBubble] + 70
7 libchrome_dll.dylib 0x0000000110b5543f -[BrowserWindowController(Fullscreen) enterWebContentFullscreen] + 255
8 libchrome_dll.dylib 0x0000000110b3c4a9 ExclusiveAccessController::EnterFullscreen(GURL const&, ExclusiveAccessBubbleType) + 233
9 libchrome_dll.dylib 0x00000001104e2a03 FullscreenController::EnterFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 387
10 libchrome_dll.dylib 0x00000001104e10c1 FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
Third stack is
3 libchrome_dll.dylib 0x0000000110927d7b ExclusiveAccessBubbleViews::ExclusiveAccessBubbleViews(ExclusiveAccessBubbleViewsContext*, GURL const&, ExclusiveAccessBubbleType) + 43
4 libchrome_dll.dylib 0x0000000110b3ad10 ExclusiveAccessController::Show() + 336
5 libchrome_dll.dylib 0x0000000110b5c719 -[BrowserWindowController(Private) showFullscreenExitBubbleIfNecessary] + 249
6 libchrome_dll.dylib 0x0000000110b54ec6 -[BrowserWindowController(Fullscreen) updateFullscreenExitBubble] + 70
7 libchrome_dll.dylib 0x0000000110b3c60c ExclusiveAccessController::UpdateExclusiveAccessExitBubbleContent(GURL const&, ExclusiveAccessBubbleType) + 188
8 libchrome_dll.dylib 0x00000001104dffc7 ExclusiveAccessManager::UpdateExclusiveAccessExitBubbleContent() + 119
9 libchrome_dll.dylib 0x00000001104e2a1a FullscreenController::EnterFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 410
10 libchrome_dll.dylib 0x00000001104e10c1 FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
This is breaking in the ExclusiveAccessBubbleViews constructor. Each time it creates a new widget, sets bounds, sets animations, etc. Then destroys any existing widget.
Chrome Version : 55.0.2868.3
OS Version: OS X 10.11.6
Steps: Go to http://permisison.site , click "fullscreen" and trace.
The common parts of the stacks are:
FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
FullscreenController::EnterFullscreenModeForTab(content::WebContents*, GURL const&) + 561
Browser::EnterFullscreenModeForTab(content::WebContents*, GURL const&) + 79
content::WebContentsImpl::EnterFullscreenMode(GURL const&) + 169
content::RenderFrameHostImpl::OnToggleFullscreen(bool) + 1094
void base::DispatchToMethodImpl<content::RenderFrameHostImpl*, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&, 0ul>(content::RenderFrameHostImpl* const&, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&&&, base::IndexSequence<0ul>) + 158
void base::DispatchToMethod<content::RenderFrameHostImpl*, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&>(content::RenderFrameHostImpl* const&, void (content::RenderFrameHostImpl::*)(bool), std::__1::tuple<bool> const&&&) + 73
void IPC::DispatchToMethod<content::RenderFrameHostImpl, void (content::RenderFrameHostImpl::*)(bool), void, std::__1::tuple<bool> >(content::RenderFrameHostImpl*, void (content::RenderFrameHostImpl::*)(bool), void*, std::__1::tuple<bool> const&) + 93
bool IPC::MessageT<FrameHostMsg_ToggleFullscreen_Meta, std::__1::tuple<bool>, void>::Dispatch<content::RenderFrameHostImpl, content::RenderFrameHostImpl, void, void (content::RenderFrameHostImpl::*)(bool)>(IPC::Message const*, content::RenderFrameHostImpl*, content::RenderFrameHostImpl*, void*, void (content::RenderFrameHostImpl::*)(bool)) + 475
content::RenderFrameHostImpl::OnMessageReceived(IPC::Message const&) + 9367
Then the first stack is
ExclusiveAccessBubbleViews::ExclusiveAccessBubbleViews(ExclusiveAccessBubbleViewsContext*, GURL const&, ExclusiveAccessBubbleType) + 43
ExclusiveAccessController::Show() + 336
-[BrowserWindowController(Private) showFullscreenExitBubbleIfNecessary] + 249
-[BrowserWindowController(Private) windowDidEnterFullScreen:] + 1270
-[BrowserWindowController(Private) enterImmersiveFullscreen] + 1344
-[BrowserWindowController(Fullscreen) enterWebContentFullscreen] + 174
ExclusiveAccessController::EnterFullscreen(GURL const&, ExclusiveAccessBubbleType) + 233
FullscreenController::EnterFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 387
FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
Second stack is
ExclusiveAccessBubbleViews::ExclusiveAccessBubbleViews(ExclusiveAccessBubbleViewsContext*, GURL const&, ExclusiveAccessBubbleType) + 43
ExclusiveAccessController::Show() + 336
-[BrowserWindowController(Private) showFullscreenExitBubbleIfNecessary] + 249
-[BrowserWindowController(Fullscreen) updateFullscreenExitBubble] + 70
-[BrowserWindowController(Fullscreen) enterWebContentFullscreen] + 255
ExclusiveAccessController::EnterFullscreen(GURL const&, ExclusiveAccessBubbleType) + 233
FullscreenController::EnterFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 387
FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
Third stack is
ExclusiveAccessBubbleViews::ExclusiveAccessBubbleViews(ExclusiveAccessBubbleViewsContext*, GURL const&, ExclusiveAccessBubbleType) + 43
ExclusiveAccessController::Show() + 336
-[BrowserWindowController(Private) showFullscreenExitBubbleIfNecessary] + 249
-[BrowserWindowController(Fullscreen) updateFullscreenExitBubble] + 70
ExclusiveAccessController::UpdateExclusiveAccessExitBubbleContent(GURL const&, ExclusiveAccessBubbleType) + 188
ExclusiveAccessManager::UpdateExclusiveAccessExitBubbleContent() + 119
FullscreenController::EnterFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 410
FullscreenController::ToggleFullscreenModeInternal(FullscreenController::FullscreenInternalOption) + 145
This is breaking in the ExclusiveAccessBubbleViews constructor. Each time it creates a new widget, sets bounds, sets animations, etc. Then destroys any existing widget.
Comment 1 by tapted@chromium.org
, Sep 29 2016