Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Destroy ui::ws::Display once menu window is hidden #66

Closed
msisov opened this issue May 2, 2017 · 2 comments
Closed

Destroy ui::ws::Display once menu window is hidden #66

msisov opened this issue May 2, 2017 · 2 comments
Assignees

Comments

@msisov
Copy link
Member

msisov commented May 2, 2017

As of now everything is destroyed except a ws::Display. When 3dot menu or right click menu is about to be hidden, almost all of the objects are destroyed, and when it is about to be shown again, new ws::Display is created. We grow in memory and don't release this resources.

@tonikitoo
Copy link
Member

more info from issue #112:

  1. open one browser window.
    then open another (control+n or menu)
    close a window pressing "x".

ui::ws::Display::~Display is never called.

  1. we are currently only destroying ui::ws::Display instances upon exit:

#0 0x556221d6b817 base::debug::StackTrace::StackTrace()
#1 0x556224db43c0 ui::ws::Display::~Display()
#2 0x556224db46a9 ui::ws::Display::~Display()
#3 0x556224d93d51 ui::ws::DisplayManager::DestroyDisplay()
#4 0x556224d93680 ui::ws::DisplayManager::DestroyAllDisplays()
#5 0x556224da0405 ui::ws::WindowServer::~WindowServer()
#6 0x556224da0839 ui::ws::WindowServer::~WindowServer()
#7 0x55622193ea18 ui::Service::~Service()
#8 0x55622193eba9 ui::Service::~Service()
(..)

@tonikitoo tonikitoo self-assigned this Jun 9, 2017
@msisov
Copy link
Member Author

msisov commented Aug 4, 2017

Fixed by #169

@msisov msisov closed this as completed Aug 4, 2017
tonikitoo pushed a commit that referenced this issue Aug 21, 2017
…pletes"

This reverts commit 9525c34.

Reason for revert: Looks like this broke interactive_ui_tests on Linux Chromium OS ASan LSan Tests (1):
https://build.chromium.org/p/chromium.memory/builders/Linux%20Chromium%20OS%20ASan%20LSan%20Tests%20%281%29/builds/22950
=================================================================
==27422==ERROR: AddressSanitizer: heap-use-after-free on address 0x6110001fbb88 at pc 0x0000113dc8f8 bp 0x7ffce4666c90 sp 0x7ffce4666c88
READ of size 8 at 0x6110001fbb88 thread T0 (interactive_ui_)
    #0 0x113dc8f7 in begin buildtools/third_party/libc++/trunk/include/vector:1465:30
    #1 0x113dc8f7 in base::ObserverListBase<chromeos::OobeUI::Observer>::RemoveObserver(chromeos::OobeUI::Observer*) base/observer_list.h:286
    #2 0x11ba806a in chromeos::ArcTermsOfServiceScreenHandler::~ArcTermsOfServiceScreenHandler() chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc:40:11
    #3 0x11ba8edd in chromeos::ArcTermsOfServiceScreenHandler::~ArcTermsOfServiceScreenHandler() chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc:39:67
    #4 0x3b94103 in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
    #5 0x3b94103 in reset buildtools/third_party/libc++/trunk/include/memory:2585
    #6 0x3b94103 in ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2539
    #7 0x3b94103 in destroy buildtools/third_party/libc++/trunk/include/memory:1853
    #8 0x3b94103 in __destroy<std::__1::unique_ptr<content::WebUIMessageHandler, std::__1::default_delete<content::WebUIMessageHandler> > > buildtools/third_party/libc++/trunk/include/memory:1721
    #9 0x3b94103 in destroy<std::__1::unique_ptr<content::WebUIMessageHandler, std::__1::default_delete<content::WebUIMessageHandler> > > buildtools/third_party/libc++/trunk/include/memory:1589
    #10 0x3b94103 in __destruct_at_end buildtools/third_party/libc++/trunk/include/vector:418
    #11 0x3b94103 in clear buildtools/third_party/libc++/trunk/include/vector:361
    #12 0x3b94103 in ~__vector_base buildtools/third_party/libc++/trunk/include/vector:446
    #13 0x3b94103 in content::WebUIImpl::~WebUIImpl() content/browser/webui/web_ui_impl.cc:91
    #14 0x3b9428d in content::WebUIImpl::~WebUIImpl() content/browser/webui/web_ui_impl.cc:87:25
    #15 0x303a2c5 in content::RenderFrameHostManager::ClearWebUIInstances() content/browser/frame_host/render_frame_host_manager.cc:679:25
    #16 0x3aee854 in content::WebContentsImpl::~WebContentsImpl() content/browser/web_contents/web_contents_impl.cc:600:29
    #17 0x3af1b8d in content::WebContentsImpl::~WebContentsImpl() content/browser/web_contents/web_contents_impl.cc:571:37
    #18 0x12091e89 in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
    #19 0x12091e89 in reset buildtools/third_party/libc++/trunk/include/memory:2585
    #20 0x12091e89 in views::WebView::SetWebContents(content::WebContents*) ui/views/controls/webview/webview.cc:73
    #21 0x120932f1 in ~WebView ui/views/controls/webview/webview.cc:44:3
    #22 0x120932f1 in views::WebView::~WebView() ui/views/controls/webview/webview.cc:43
    #23 0x520969f in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
    #24 0x520969f in reset buildtools/third_party/libc++/trunk/include/memory:2585
    #25 0x520969f in ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2539
    #26 0x520969f in chromeos::WebUILoginView::~WebUILoginView() chrome/browser/chromeos/login/ui/webui_login_view.cc:224
    #27 0x520a07d in chromeos::WebUILoginView::~WebUILoginView() chrome/browser/chromeos/login/ui/webui_login_view.cc:199:35
    #28 0xad7565b in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
    #29 0xad7565b in reset buildtools/third_party/libc++/trunk/include/memory:2585
    #30 0xad7565b in ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2539
    #31 0xad7565b in views::View::DoRemoveChildView(views::View*, bool, bool, bool, views::View*) ui/views/view.cc:2136
    #32 0xad77048 in views::View::RemoveAllChildViews(bool) ui/views/view.cc:302:5
    #33 0xad9b615 in views::internal::RootView::~RootView() ui/views/widget/root_view.cc:181:5
    #34 0xad9b7cd in views::internal::RootView::~RootView() ui/views/widget/root_view.cc:177:23
    #35 0xada5ac1 in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
    #36 0xada5ac1 in reset buildtools/third_party/libc++/trunk/include/memory:2585
    #37 0xada5ac1 in DestroyRootView ui/views/widget/widget.cc:1434
    #38 0xada5ac1 in views::Widget::~Widget() ui/views/widget/widget.cc:180
    #39 0xada61ad in views::Widget::~Widget() ui/views/widget/widget.cc:179:19
    #40 0xade9e6f in views::NativeWidgetAura::~NativeWidgetAura() ui/views/widget/native_widget_aura.cc
    #41 0xadea10d in views::NativeWidgetAura::~NativeWidgetAura() ui/views/widget/native_widget_aura.cc:986:39
    #42 0xe11b498 in aura::Window::~Window() ui/aura/window.cc:123:16
    #43 0xe11c90d in aura::Window::~Window() ui/aura/window.cc:77:19
    #44 0xadeb043 in Invoke<const base::WeakPtr<views::NativeWidgetAura> &> base/bind_internal.h:196:12
    #45 0xadeb043 in MakeItSo<void (views::NativeWidgetAura::*const &)(), const base::WeakPtr<views::NativeWidgetAura> &> base/bind_internal.h:285
    #46 0xadeb043 in RunImpl<void (views::NativeWidgetAura::*const &)(), const std::__1::tuple<base::WeakPtr<views::NativeWidgetAura> > &, 0> base/bind_internal.h:340
    #47 0xadeb043 in base::internal::Invoker<base::internal::BindState<void (views::NativeWidgetAura::*)(), base::WeakPtr<views::NativeWidgetAura> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:319
    #48 0xb35e805 in Run base/callback.h:91:12
    #49 0xb35e805 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:59
    #50 0xb3d46da in base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:410:19
    #51 0xb3d5040 in base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:421:5
    #52 0xb3d5d81 in base::MessageLoop::DoWork() base/message_loop/message_loop.cc:528:13
    #53 0xb3e0820 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:220:31
    #54 0xb3d3535 in base::MessageLoop::Run() base/message_loop/message_loop.cc:350:10
    #55 0xb472370 in base::RunLoop::Run() base/run_loop.cc:123:14
    #56 0x9304487 in RunThisRunLoop content/public/test/test_utils.cc:125:13
    #57 0x9304487 in content::RunAllPendingInMessageLoop() content/public/test/test_utils.cc:133
    #58 0x82fe2ba in InProcessBrowserTest::PostRunTestOnMainThread() chrome/test/base/in_process_browser_test.cc:607:3
    #59 0x92d79f8 in content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:319:5
    #60 0x83331b2 in Run base/callback.h:80:12
    #61 0x83331b2 in ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1857
    #62 0x83304b3 in ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1210:18
    #63 0x4dff120 in chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun() chrome/browser/chromeos/chrome_browser_main_chromeos.cc:655:32
    #64 0x2b32584 in content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:1151:13
    #65 0x3a66b08 in Run base/callback.h:80:12
    #66 0x3a66b08 in content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:45
    #67 0x2b2d47f in content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:935:25
    #68 0x2b3b21d in content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner.cc:131:17
    #69 0x2b252a6 in content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:42:32
    #70 0x8013aae in content::RunNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) content/app/content_main_runner.cc:408:14
    #71 0x8015aa9 in content::ContentMainRunnerImpl::Run() content/app/content_main_runner.cc:690:12
    #72 0xe62b2ec in service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:469:29
    #73 0x8011e73 in content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10

Original change's description:
> Makes EmbeddedServiceRunner block until background thread completes
> 
> Prior to this when EmbeddedServiceRunner was destroyed the background
> thread would most likely still be running. Worse yet it was entirely
> possible for ~InstanceManager to run on the same thread as the
> service was running on, which attempts to destroy thread_ (because it
> assumes thread_ was destroyed already). When this happens you hit a
> CHECK in thread_ because you can't join with a thread while you are on
> the thread.
> 
> By making Shutdown() block until the background thread has said it's
> ready to be shutdown, and then destroy the thread from the initiating
> thread we never hit this situation.
> 
> BUG=none
> TEST=covered by test
> 
> Change-Id: I09ebc5167247e2e8a1b15b625fdff8dc8b8d2e8f
> Reviewed-on: https://chromium-review.googlesource.com/611392
> Commit-Queue: Scott Violet <sky@chromium.org>
> Reviewed-by: Ken Rockot <rockot@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#493878}

TBR=sky@chromium.org,rockot@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: none
Change-Id: Ib5a4bdf57e78f5ecb61983c6c29ca8f80d6da04f
Reviewed-on: https://chromium-review.googlesource.com/612810
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#494001}
tonikitoo pushed a commit that referenced this issue Aug 21, 2017
…read completes""

This reverts commit cb78bb6.

Reason for revert: The original patch was not the culprit of the breakage. Relanding.

Original change's description:
> Revert "Makes EmbeddedServiceRunner block until background thread completes"
> 
> This reverts commit 9525c34.
> 
> Reason for revert: Looks like this broke interactive_ui_tests on Linux Chromium OS ASan LSan Tests (1):
> https://build.chromium.org/p/chromium.memory/builders/Linux%20Chromium%20OS%20ASan%20LSan%20Tests%20%281%29/builds/22950
> =================================================================
> ==27422==ERROR: AddressSanitizer: heap-use-after-free on address 0x6110001fbb88 at pc 0x0000113dc8f8 bp 0x7ffce4666c90 sp 0x7ffce4666c88
> READ of size 8 at 0x6110001fbb88 thread T0 (interactive_ui_)
>     #0 0x113dc8f7 in begin buildtools/third_party/libc++/trunk/include/vector:1465:30
>     #1 0x113dc8f7 in base::ObserverListBase<chromeos::OobeUI::Observer>::RemoveObserver(chromeos::OobeUI::Observer*) base/observer_list.h:286
>     #2 0x11ba806a in chromeos::ArcTermsOfServiceScreenHandler::~ArcTermsOfServiceScreenHandler() chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc:40:11
>     #3 0x11ba8edd in chromeos::ArcTermsOfServiceScreenHandler::~ArcTermsOfServiceScreenHandler() chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc:39:67
>     #4 0x3b94103 in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
>     #5 0x3b94103 in reset buildtools/third_party/libc++/trunk/include/memory:2585
>     #6 0x3b94103 in ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2539
>     #7 0x3b94103 in destroy buildtools/third_party/libc++/trunk/include/memory:1853
>     #8 0x3b94103 in __destroy<std::__1::unique_ptr<content::WebUIMessageHandler, std::__1::default_delete<content::WebUIMessageHandler> > > buildtools/third_party/libc++/trunk/include/memory:1721
>     #9 0x3b94103 in destroy<std::__1::unique_ptr<content::WebUIMessageHandler, std::__1::default_delete<content::WebUIMessageHandler> > > buildtools/third_party/libc++/trunk/include/memory:1589
>     #10 0x3b94103 in __destruct_at_end buildtools/third_party/libc++/trunk/include/vector:418
>     #11 0x3b94103 in clear buildtools/third_party/libc++/trunk/include/vector:361
>     #12 0x3b94103 in ~__vector_base buildtools/third_party/libc++/trunk/include/vector:446
>     #13 0x3b94103 in content::WebUIImpl::~WebUIImpl() content/browser/webui/web_ui_impl.cc:91
>     #14 0x3b9428d in content::WebUIImpl::~WebUIImpl() content/browser/webui/web_ui_impl.cc:87:25
>     #15 0x303a2c5 in content::RenderFrameHostManager::ClearWebUIInstances() content/browser/frame_host/render_frame_host_manager.cc:679:25
>     #16 0x3aee854 in content::WebContentsImpl::~WebContentsImpl() content/browser/web_contents/web_contents_impl.cc:600:29
>     #17 0x3af1b8d in content::WebContentsImpl::~WebContentsImpl() content/browser/web_contents/web_contents_impl.cc:571:37
>     #18 0x12091e89 in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
>     #19 0x12091e89 in reset buildtools/third_party/libc++/trunk/include/memory:2585
>     #20 0x12091e89 in views::WebView::SetWebContents(content::WebContents*) ui/views/controls/webview/webview.cc:73
>     #21 0x120932f1 in ~WebView ui/views/controls/webview/webview.cc:44:3
>     #22 0x120932f1 in views::WebView::~WebView() ui/views/controls/webview/webview.cc:43
>     #23 0x520969f in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
>     #24 0x520969f in reset buildtools/third_party/libc++/trunk/include/memory:2585
>     #25 0x520969f in ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2539
>     #26 0x520969f in chromeos::WebUILoginView::~WebUILoginView() chrome/browser/chromeos/login/ui/webui_login_view.cc:224
>     #27 0x520a07d in chromeos::WebUILoginView::~WebUILoginView() chrome/browser/chromeos/login/ui/webui_login_view.cc:199:35
>     #28 0xad7565b in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
>     #29 0xad7565b in reset buildtools/third_party/libc++/trunk/include/memory:2585
>     #30 0xad7565b in ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2539
>     #31 0xad7565b in views::View::DoRemoveChildView(views::View*, bool, bool, bool, views::View*) ui/views/view.cc:2136
>     #32 0xad77048 in views::View::RemoveAllChildViews(bool) ui/views/view.cc:302:5
>     #33 0xad9b615 in views::internal::RootView::~RootView() ui/views/widget/root_view.cc:181:5
>     #34 0xad9b7cd in views::internal::RootView::~RootView() ui/views/widget/root_view.cc:177:23
>     #35 0xada5ac1 in operator() buildtools/third_party/libc++/trunk/include/memory:2272:5
>     #36 0xada5ac1 in reset buildtools/third_party/libc++/trunk/include/memory:2585
>     #37 0xada5ac1 in DestroyRootView ui/views/widget/widget.cc:1434
>     #38 0xada5ac1 in views::Widget::~Widget() ui/views/widget/widget.cc:180
>     #39 0xada61ad in views::Widget::~Widget() ui/views/widget/widget.cc:179:19
>     #40 0xade9e6f in views::NativeWidgetAura::~NativeWidgetAura() ui/views/widget/native_widget_aura.cc
>     #41 0xadea10d in views::NativeWidgetAura::~NativeWidgetAura() ui/views/widget/native_widget_aura.cc:986:39
>     #42 0xe11b498 in aura::Window::~Window() ui/aura/window.cc:123:16
>     #43 0xe11c90d in aura::Window::~Window() ui/aura/window.cc:77:19
>     #44 0xadeb043 in Invoke<const base::WeakPtr<views::NativeWidgetAura> &> base/bind_internal.h:196:12
>     #45 0xadeb043 in MakeItSo<void (views::NativeWidgetAura::*const &)(), const base::WeakPtr<views::NativeWidgetAura> &> base/bind_internal.h:285
>     #46 0xadeb043 in RunImpl<void (views::NativeWidgetAura::*const &)(), const std::__1::tuple<base::WeakPtr<views::NativeWidgetAura> > &, 0> base/bind_internal.h:340
>     #47 0xadeb043 in base::internal::Invoker<base::internal::BindState<void (views::NativeWidgetAura::*)(), base::WeakPtr<views::NativeWidgetAura> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:319
>     #48 0xb35e805 in Run base/callback.h:91:12
>     #49 0xb35e805 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:59
>     #50 0xb3d46da in base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:410:19
>     #51 0xb3d5040 in base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:421:5
>     #52 0xb3d5d81 in base::MessageLoop::DoWork() base/message_loop/message_loop.cc:528:13
>     #53 0xb3e0820 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:220:31
>     #54 0xb3d3535 in base::MessageLoop::Run() base/message_loop/message_loop.cc:350:10
>     #55 0xb472370 in base::RunLoop::Run() base/run_loop.cc:123:14
>     #56 0x9304487 in RunThisRunLoop content/public/test/test_utils.cc:125:13
>     #57 0x9304487 in content::RunAllPendingInMessageLoop() content/public/test/test_utils.cc:133
>     #58 0x82fe2ba in InProcessBrowserTest::PostRunTestOnMainThread() chrome/test/base/in_process_browser_test.cc:607:3
>     #59 0x92d79f8 in content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:319:5
>     #60 0x83331b2 in Run base/callback.h:80:12
>     #61 0x83331b2 in ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1857
>     #62 0x83304b3 in ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1210:18
>     #63 0x4dff120 in chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun() chrome/browser/chromeos/chrome_browser_main_chromeos.cc:655:32
>     #64 0x2b32584 in content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:1151:13
>     #65 0x3a66b08 in Run base/callback.h:80:12
>     #66 0x3a66b08 in content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:45
>     #67 0x2b2d47f in content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:935:25
>     #68 0x2b3b21d in content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner.cc:131:17
>     #69 0x2b252a6 in content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:42:32
>     #70 0x8013aae in content::RunNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) content/app/content_main_runner.cc:408:14
>     #71 0x8015aa9 in content::ContentMainRunnerImpl::Run() content/app/content_main_runner.cc:690:12
>     #72 0xe62b2ec in service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:469:29
>     #73 0x8011e73 in content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10
> 
> Original change's description:
> > Makes EmbeddedServiceRunner block until background thread completes
> > 
> > Prior to this when EmbeddedServiceRunner was destroyed the background
> > thread would most likely still be running. Worse yet it was entirely
> > possible for ~InstanceManager to run on the same thread as the
> > service was running on, which attempts to destroy thread_ (because it
> > assumes thread_ was destroyed already). When this happens you hit a
> > CHECK in thread_ because you can't join with a thread while you are on
> > the thread.
> > 
> > By making Shutdown() block until the background thread has said it's
> > ready to be shutdown, and then destroy the thread from the initiating
> > thread we never hit this situation.
> > 
> > BUG=none
> > TEST=covered by test
> > 
> > Change-Id: I09ebc5167247e2e8a1b15b625fdff8dc8b8d2e8f
> > Reviewed-on: https://chromium-review.googlesource.com/611392
> > Commit-Queue: Scott Violet <sky@chromium.org>
> > Reviewed-by: Ken Rockot <rockot@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#493878}
> 
> TBR=sky@chromium.org,rockot@chromium.org
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Bug: none
> Change-Id: Ib5a4bdf57e78f5ecb61983c6c29ca8f80d6da04f
> Reviewed-on: https://chromium-review.googlesource.com/612810
> Reviewed-by: Nico Weber <thakis@chromium.org>
> Commit-Queue: Nico Weber <thakis@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#494001}

TBR=sky@chromium.org,thakis@chromium.org,rockot@chromium.org

Change-Id: I76836f34228a851b6c121a40ab57553ed3946f5f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: none
Reviewed-on: https://chromium-review.googlesource.com/613641
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#494074}
msisov pushed a commit to msisov/chromium that referenced this issue Sep 25, 2017
Non-fling PEEKING->FULLSCREEN_ALL_APPS was not being
recorded in UMA.

Also, at the request of PMs, I modified the histogram description for
Apps.AppListAppLaunched.

TBR=newcomer@chromium.org

(cherry picked from commit 1c98086)

Bug: 761188
Change-Id: Ia658cac79326678b5e011aca2b1670b6b868e977
Reviewed-on: https://chromium-review.googlesource.com/646762
Commit-Queue: Alex Newcomer <newcomer@chromium.org>
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#499349}
Reviewed-on: https://chromium-review.googlesource.com/655621
Reviewed-by: Alex Newcomer <newcomer@chromium.org>
Cr-Commit-Position: refs/branch-heads/3202@{Igalia#66}
Cr-Branched-From: fa6a5d8-refs/heads/master@{#499098}
jkim-julie pushed a commit that referenced this issue Oct 29, 2018
…enChanged()

When running in single threaded mode, calls from
OnBeginImplFrameDeadline() can make their way from the main thread to
the impl thread, and then (erroneously) directly back to the main
thread, causing a crash. See the stack trace below. With this CL, the
call from viz::HostFrameSinkManager::OnFrameTokenChanged() is proxied
back to the main thread for the call to
content::DelegatedFrameHost::OnFrameTokenChanged().

A number of tests also call FrameSinkManagerImpl::SetLocalClient and/or
surface_utils::ConnectWithLocalFrameSinkManager, and I did not want
to change their existing behavior. So the additional task_runner
parameter is defaulted to nullptr, and in that case the old behavior
still applies - the call is not PostTasked.

Example crash:
[243567:243567:1023/120428.757147:FATAL:single_thread_proxy.cc(239)] Check failed: task_runner_provider_->IsMainThread().
#0 0x7f4d3b3bbccd base::debug::StackTrace::StackTrace()
#1 0x7f4d3b0b8a2a base::debug::StackTrace::StackTrace()
#2 0x7f4d3b12a59b logging::LogMessage::~LogMessage()
#3 0x7f4d315b4e9b cc::SingleThreadProxy::SetNeedsCommit()
#4 0x7f4d3149b8ef cc::LayerTreeHost::SetNeedsCommit()
#5 0x7f4d312b28f1 cc::Layer::SetNeedsCommit()
#6 0x7f4d312b8205 cc::Layer::SetBackgroundColor()
#7 0x7f4d2cb5fd54 ui::Layer::SetColorFromAnimation()
#8 0x7f4d2cb79024 ui::LayerAnimator::SetColor()
#9 0x7f4d2cb56a5c ui::Layer::SetColor()
#10 0x7f4d37f1b8a1 content::RenderWidgetHostViewAura::UpdateBackgroundColor()
#11 0x7f4d37f2851e content::RenderWidgetHostViewBase::SetContentBackgroundColor()
#12 0x7f4d37f222cb content::RenderWidgetHostViewAura::OnRenderFrameMetadataChangedAfterActivation()
#13 0x7f4d37e81d5c content::RenderFrameMetadataProviderImpl::OnRenderFrameMetadataChangedAfterActivation()
#14 0x7f4d37e8391f _ZN4base8internal13FunctorTraitsIMN7content31RenderFrameMetadataProviderImplEFvN2cc19RenderFrameMetadataEEvE6InvokeIS7_NS_7WeakPtrIS3_EEJS5_EEEvT_OT0_DpOT1_
#15 0x7f4d37e83805 _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIMN7content31RenderFrameMetadataProviderImplEFvN2cc19RenderFrameMetadataEENS_7WeakPtrIS5_EEJS7_EEEvOT_OT0_DpOT1_
#16 0x7f4d37e8377d _ZN4base8internal7InvokerINS0_9BindStateIMN7content31RenderFrameMetadataProviderImplEFvN2cc19RenderFrameMetadataEEJNS_7WeakPtrIS4_EES6_EEEFvvEE7RunImplIS8_NSt3__15tupleIJSA_S6_EEEJLm0ELm1EEEEvOT_OT0_NSF_16integer_sequenceImJXspT1_EEEE
#17 0x7f4d37e836f9 _ZN4base8internal7InvokerINS0_9BindStateIMN7content31RenderFrameMetadataProviderImplEFvN2cc19RenderFrameMetadataEEJNS_7WeakPtrIS4_EES6_EEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#18 0x7f4d35ecd92e _ZNO4base12OnceCallbackIFvvEE3RunEv
#19 0x7f4d37d2d8a3 content::FrameTokenMessageQueue::DidProcessFrame()
#20 0x7f4d37ef17cd content::RenderWidgetHostImpl::DidProcessFrame()
#21 0x7f4d37f2aeaa content::RenderWidgetHostViewBase::OnFrameTokenChangedForView()
#22 0x7f4d3845b99f content::DelegatedFrameHostClientAura::OnFrameTokenChanged()
#23 0x7f4d38483f90 content::DelegatedFrameHost::OnFrameTokenChanged()
#24 0x7f4d1aaa7e8c viz::HostFrameSinkManager::OnFrameTokenChanged()
#25 0x7f4d1b5b41dc viz::FrameSinkManagerImpl::OnFrameTokenChanged()
#26 0x7f4d1b59594e viz::CompositorFrameSinkSupport::OnFrameTokenChanged()
#27 0x7f4d1b61ab83 viz::Surface::ActivateFrame()
#28 0x7f4d1b61920f viz::Surface::ActivatePendingFrame()
#29 0x7f4d1b618f2a viz::Surface::OnSurfaceDependencyAdded()
#30 0x7f4d1b62e241 viz::SurfaceDependencyTracker::OnSurfaceDependencyAdded()
#31 0x7f4d1b6432ac viz::SurfaceManager::SurfaceDependencyAdded()
#32 0x7f4d1b619b7f viz::Surface::UpdateActivationDependencies()
#33 0x7f4d1b6194f3 viz::Surface::QueueFrame()
#34 0x7f4d1b59a155 viz::CompositorFrameSinkSupport::MaybeSubmitCompositorFrameInternal()
#35 0x7f4d1b598206 viz::CompositorFrameSinkSupport::MaybeSubmitCompositorFrame()
#36 0x7f4d1b59801a viz::CompositorFrameSinkSupport::SubmitCompositorFrame()
#37 0x7f4d1b5a4b08 viz::DirectLayerTreeFrameSink::SubmitCompositorFrame()
#38 0x7f4d314d8e24 cc::LayerTreeHostImpl::DrawLayers()
#39 0x7f4d315b8ee8 cc::SingleThreadProxy::DoComposite()
#40 0x7f4d315bb087 cc::SingleThreadProxy::ScheduledActionDrawIfPossible()
#41 0x7f4d3139c9b8 cc::Scheduler::DrawIfPossible()
#42 0x7f4d31396581 cc::Scheduler::ProcessScheduledActions()
#43 0x7f4d3139c7da cc::Scheduler::OnBeginImplFrameDeadline()
#44 0x7f4d313a024d _ZN4base8internal13FunctorTraitsIMN2cc9SchedulerEFvvEvE6InvokeIS5_PS3_JEEEvT_OT0_DpOT1_
#45 0x7f4d313a0194 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIMN2cc9SchedulerEFvvEJPS5_EEEvOT_DpOT0_
#46 0x7f4d313a0145 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc9SchedulerEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE7RunImplIS6_NSt3__15tupleIJS8_EEEJLm0EEEEvOT_OT0_NSD_16integer_sequenceImJXspT1_EEEE
#47 0x7f4d313a0089 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc9SchedulerEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#48 0x7f4d313a059e _ZNO4base12OnceCallbackIFvvEE3RunEv
#49 0x7f4d313a0544 _ZN4base8internal22CancelableCallbackImplINS_12OnceCallbackIFvvEEEE11ForwardOnceIJEEEvDpT_
#50 0x7f4d3129de9f _ZN4base8internal13FunctorTraitsIMN2cc28ScrollbarAnimationControllerEFvvEvE6InvokeIS5_RKNS_7WeakPtrIS3_EEJEEEvT_OT0_DpOT1_
#51 0x7f4d3129de1a _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRKMN2cc28ScrollbarAnimationControllerEFvvERKNS_7WeakPtrIS5_EEJEEEvOT_OT0_DpOT1_
#52 0x7f4d3129ddb0 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc28ScrollbarAnimationControllerEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE7RunImplIRKS6_RKNSt3__15tupleIJS8_EEEJLm0EEEEvOT_OT0_NSF_16integer_sequenceImJXspT1_EEEE
#53 0x7f4d3137d0d9 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc12ResourcePoolEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#54 0x7f4d3b0683ee _ZNO4base12OnceCallbackIFvvEE3RunEv
#55 0x7f4d3b0ba072 base::debug::TaskAnnotator::RunTask()
#56 0x7f4d3b14f466 base::MessageLoop::RunTask()
#57 0x7f4d3b14f7ee base::MessageLoop::DeferOrRunPendingTask()
#58 0x7f4d3b14fc79 base::MessageLoop::DoWork()
#59 0x7f4d3b1572b6 base::MessagePumpGlib::Run()
#60 0x7f4d3b14eb5b base::MessageLoop::Run()
#61 0x7f4d3b1fac6d base::RunLoop::Run()
#62 0x7f4d372f8dfc content::BrowserMainLoop::MainMessageLoopRun()
#63 0x7f4d372f8a52 content::BrowserMainLoop::RunMainMessageLoopParts()
#64 0x7f4d37301050 content::BrowserMainRunnerImpl::Run()
#65 0x0000018caad1 (anonymous namespace)::RunOneTest()
#66 0x0000018ca696 (anonymous namespace)::RunTests()
#67 0x0000018ca11d LayoutTestBrowserMain()
#68 0x0000018c82c0 content::ShellMainDelegate::RunProcess()
#69 0x7f4d39305d5a content::RunBrowserProcessMain()
#70 0x7f4d39308bc7 content::ContentMainRunnerImpl::Run()
#71 0x7f4d392feabc content::ContentServiceManagerMainDelegate::RunEmbedderProcess()
#72 0x7f4d13359c2a service_manager::Main()
#73 0x7f4d393034b3 content::ContentMain()
#74 0x00000075e165 main
#75 0x7f4d13dcd2b1 __libc_start_main
#76 0x00000075e02a _start


Bug: 667551
Change-Id: Iab72ad842b4672f7c3e37060bd2085b2d8ce0803
Reviewed-on: https://chromium-review.googlesource.com/c/1297477
Reviewed-by: Charlie Reis <creis@chromium.org>
Reviewed-by: enne <enne@chromium.org>
Commit-Queue: Mason Freed <masonfreed@chromium.org>
Cr-Commit-Position: refs/heads/master@{#602912}
jkim-julie pushed a commit that referenced this issue Dec 10, 2018
Data race happens between SetBehindCaptivePortal on BrowserThread::IO
and CaptivePortalBrowserTest::OnIntercept line 981 on main thread

Change-Id: I58163d96f66f8ca3b2d257d1481b0d12f980c679

ThreadSanitizer Report

WARNING: ThreadSanitizer: data race (pid=37545)
  Read of size 1 at 0x7b44000004d8 by main thread:
    #0 CaptivePortalBrowserTest::OnIntercept(content::URLLoaderInterceptor::RequestParams*) /src/chrome/browser/captive_portal/captive_portal_browsertest.cc:984:9 (browser_tests+0x4ea3f84)
    #1 Invoke<bool (CaptivePortalBrowserTest::*)(content::URLLoaderInterceptor::RequestParams *), CaptivePortalBrowserTest *, content::URLLoaderInterceptor::RequestParams *> /src/base/bind_internal.h:507:12 (browser_tests+0x4ed3a2f)
    #2 MakeItSo<bool (CaptivePortalBrowserTest::*const &)(content::URLLoaderInterceptor::RequestParams *), CaptivePortalBrowserTest *, content::URLLoaderInterceptor::RequestParams *> /src/base/bind_internal.h:607 (browser_tests+0x4ed3a2f)
    #3 RunImpl<bool (CaptivePortalBrowserTest::*const &)(content::URLLoaderInterceptor::RequestParams *), const std::__1::tuple<base::internal::UnretainedWrapper<CaptivePortalBrowserTest> > &, 0> /src/base/bind_internal.h:680 (browser_tests+0x4ed3a2f)
    #4 base::internal::Invoker<base::internal::BindState<bool (CaptivePortalBrowserTest::*)(content::URLLoaderInterceptor::RequestParams*), base::internal::UnretainedWrapper<CaptivePortalBrowserTest> >, bool (content::URLLoaderInterceptor::RequestParams*)>::Run(base::internal::BindStateBase*, content::URLLoaderInterceptor::RequestParams*) /src/base/bind_internal.h:662 (browser_tests+0x4ed3a2f)
    #5 Run /src/base/callback.h:129:12 (browser_tests+0xa8cbbcc)
    #6 content::URLLoaderInterceptor::Intercept(content::URLLoaderInterceptor::RequestParams*) /src/content/public/test/url_loader_interceptor.cc:377 (browser_tests+0xa8cbbcc)
    #7 content::URLLoaderInterceptor::Interceptor::CreateLoaderAndStart(mojo::InterfaceRequest<network::mojom::URLLoader>, int, int, unsigned int, network::ResourceRequest const&, mojo::InterfacePtr<network::mojom::URLLoaderClient>, net::MutableNetworkTrafficAnnotationTag const&) /src/content/public/test/url_loader_interceptor.cc:92:18 (browser_tests+0xa8cd294)
    #8 network::mojom::URLLoaderFactoryProxy_CreateLoaderAndStart_Message::Dispatch(network::mojom::URLLoaderFactory*) /src/out/Default/gen/services/network/public/mojom/url_loader_factory.mojom.cc:145:11 (browser_tests+0x581c781)
    #9 network::mojom::URLLoaderFactoryStubDispatch::Accept(network::mojom::URLLoaderFactory*, mojo::Message*) /src/out/Default/gen/services/network/public/mojom/url_loader_factory.mojom.cc:353:20 (browser_tests+0x581c626)
    #10 network::mojom::URLLoaderFactoryStub<mojo::RawPtrImplRefTraits<network::mojom::URLLoaderFactory> >::Accept(mojo::Message*) /src/out/Default/gen/services/network/public/mojom/url_loader_factory.mojom.h:155:12 (browser_tests+0x69ccb3f)
    #11 mojo::InterfaceEndpointClient::HandleValidatedMessage(mojo::Message*) /src/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:423:32 (browser_tests+0xb97e563)
    #12 mojo::InterfaceEndpointClient::HandleIncomingMessageThunk::Accept(mojo::Message*) /src/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:133:18 (browser_tests+0xb97df6a)
    #13 mojo::FilterChain::Accept(mojo::Message*) /src/mojo/public/cpp/bindings/lib/filter_chain.cc:40:17 (browser_tests+0xb9823ba)
    #14 mojo::InterfaceEndpointClient::HandleIncomingMessage(mojo::Message*) /src/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:306:19 (browser_tests+0xb9801ba)
    #15 mojo::internal::MultiplexRouter::ProcessIncomingMessage(mojo::internal::MultiplexRouter::MessageWrapper*, mojo::internal::MultiplexRouter::ClientCallBehavior, base::SequencedTaskRunner*) /src/mojo/public/cpp/bindings/lib/multiplex_router.cc:869:42 (browser_tests+0xb98ba4b)
    #16 mojo::internal::MultiplexRouter::Accept(mojo::Message*) /src/mojo/public/cpp/bindings/lib/multiplex_router.cc:590:38 (browser_tests+0xb98a86a)
    #17 mojo::FilterChain::Accept(mojo::Message*) /src/mojo/public/cpp/bindings/lib/filter_chain.cc:40:17 (browser_tests+0xb9823ba)
    #18 mojo::Connector::ReadSingleMessage(unsigned int*) /src/mojo/public/cpp/bindings/lib/connector.cc:457:51 (browser_tests+0xb97a2be)
    #19 mojo::Connector::ReadAllAvailableMessages() /src/mojo/public/cpp/bindings/lib/connector.cc:486:10 (browser_tests+0xb97b0e7)
    #20 mojo::Connector::OnHandleReadyInternal(unsigned int) /src/mojo/public/cpp/bindings/lib/connector.cc:387:3 (browser_tests+0xb97ae8e)
    #21 mojo::Connector::OnWatcherHandleReady(unsigned int) /src/mojo/public/cpp/bindings/lib/connector.cc:364:3 (browser_tests+0xb97ade0)
    #22 Invoke<void (mojo::Connector::*)(unsigned int), mojo::Connector *, unsigned int> /src/base/bind_internal.h:507:12 (browser_tests+0xb97bbcf)
    #23 MakeItSo<void (mojo::Connector::*const &)(unsigned int), mojo::Connector *, unsigned int> /src/base/bind_internal.h:607 (browser_tests+0xb97bbcf)
    #24 RunImpl<void (mojo::Connector::*const &)(unsigned int), const std::__1::tuple<base::internal::UnretainedWrapper<mojo::Connector> > &, 0> /src/base/bind_internal.h:680 (browser_tests+0xb97bbcf)
    #25 base::internal::Invoker<base::internal::BindState<void (mojo::Connector::*)(unsigned int), base::internal::UnretainedWrapper<mojo::Connector> >, void (unsigned int)>::Run(base::internal::BindStateBase*, unsigned int) /src/base/bind_internal.h:662 (browser_tests+0xb97bbcf)
    #26 Run /src/base/callback.h:129:12 (browser_tests+0x66996b8)
    #27 mojo::SimpleWatcher::DiscardReadyState(base::RepeatingCallback<void (unsigned int)> const&, unsigned int, mojo::HandleSignalsState const&) /src/mojo/public/cpp/system/simple_watcher.h:194 (browser_tests+0x66996b8)
    #28 Invoke<void (*const &)(const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &), const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &> /src/base/bind_internal.h:407:12 (browser_tests+0x6699715)
    #29 MakeItSo<void (*const &)(const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &), const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &> /src/base/bind_internal.h:607 (browser_tests+0x6699715)
    #30 RunImpl<void (*const &)(const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &), const std::__1::tuple<base::RepeatingCallback<void (unsigned int)> > &, 0> /src/base/bind_internal.h:680 (browser_tests+0x6699715)
    #31 base::internal::Invoker<base::internal::BindState<void (*)(base::RepeatingCallback<void (unsigned int)> const&, unsigned int, mojo::HandleSignalsState const&), base::RepeatingCallback<void (unsigned int)> >, void (unsigned int, mojo::HandleSignalsState const&)>::Run(base::internal::BindStateBase*, unsigned int, mojo::HandleSignalsState const&) /src/base/bind_internal.h:662 (browser_tests+0x6699715)
    #32 Run /src/base/callback.h:129:12 (browser_tests+0xa96dece)
    #33 mojo::SimpleWatcher::OnHandleReady(int, unsigned int, mojo::HandleSignalsState const&) /src/mojo/public/cpp/system/simple_watcher.cc:273 (browser_tests+0xa96dece)
    #34 Invoke<void (mojo::SimpleWatcher::*)(int, unsigned int, const mojo::HandleSignalsState &), const base::WeakPtr<mojo::SimpleWatcher> &, const int &, const unsigned int &, const mojo::HandleSignalsState &> /src/base/bind_internal.h:507:12 (browser_tests+0xa96e625)
    #35 MakeItSo<void (mojo::SimpleWatcher::*const &)(int, unsigned int, const mojo::HandleSignalsState &), const base::WeakPtr<mojo::SimpleWatcher> &, const int &, const unsigned int &, const mojo::HandleSignalsState &> /src/base/bind_internal.h:627 (browser_tests+0xa96e625)
    #36 void base::internal::Invoker<base::internal::BindState<void (mojo::SimpleWatcher::*)(int, unsigned int, mojo::HandleSignalsState const&), base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState>, void ()>::RunImpl<void (mojo::SimpleWatcher::* const&)(int, unsigned int, mojo::HandleSignalsState const&), std::__1::tuple<base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState> const&, 0ul, 1ul, 2ul, 3ul>(void (mojo::SimpleWatcher::* const&&&)(int, unsigned int, mojo::HandleSignalsState const&), std::__1::tuple<base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState> const&&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul>) /src/base/bind_internal.h:680 (browser_tests+0xa96e625)
    #37 base::internal::Invoker<base::internal::BindState<void (mojo::SimpleWatcher::*)(int, unsigned int, mojo::HandleSignalsState const&), base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState>, void ()>::Run(base::internal::BindStateBase*) /src/base/bind_internal.h:662:12 (browser_tests+0xa96e4ce)
    #38 Run /src/base/callback.h:99:12 (browser_tests+0x9a92ee8)
    #39 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) /src/base/debug/task_annotator.cc:101 (browser_tests+0x9a92ee8)
    #40 base::MessageLoop::RunTask(base::PendingTask*) /src/base/message_loop/message_loop.cc:432:46 (browser_tests+0x55f355a)
    #41 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) /src/base/message_loop/message_loop.cc:443:5 (browser_tests+0x55f3e7c)
    #42 base::MessageLoop::DoWork() /src/base/message_loop/message_loop.cc:487:16 (browser_tests+0x55f41c5)
    #43 base::MessagePumpGlib::Run(base::MessagePump::Delegate*) /src/base/message_loop/message_pump_glib.cc:309:49 (browser_tests+0x9ad27bb)
    #44 base::MessageLoop::Run(bool) /src/base/message_loop/message_loop.cc:374:12 (browser_tests+0x55f2c67)
    #45 non-virtual thunk to base::MessageLoop::Run(bool) /src/base/message_loop/message_loop.cc (browser_tests+0x55f2d54)
    #46 base::RunLoop::Run() /src/base/run_loop.cc:102:14 (browser_tests+0x55f6adf)
    #47 RunThisRunLoop /src/content/public/test/test_utils.cc:132:13 (browser_tests+0xa8c5bf8)
    #48 content::RunMessageLoop() /src/content/public/test/test_utils.cc:127 (browser_tests+0xa8c5bf8)
    #49 (anonymous namespace)::CaptivePortalObserver::WaitForResults(int) /src/chrome/browser/captive_portal/captive_portal_browsertest.cc:432:5 (browser_tests+0x4ea7325)
    #50 CaptivePortalBrowserTest_ShowCaptivePortalInterstitialOnCertError_Test::RunTestOnMainThread() /src/chrome/browser/captive_portal/captive_portal_browsertest.cc:1891:25 (browser_tests+0x4eb9cc3)
    #51 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() /src/content/public/test/browser_test_base.cc:406:5 (browser_tests+0xa863ddd)
    #52 Invoke<void (content::BrowserTestBase::*)(), content::BrowserTestBase *> /src/base/bind_internal.h:507:12 (browser_tests+0xa864f28)
    #53 MakeItSo<void (content::BrowserTestBase::*const &)(), content::BrowserTestBase *> /src/base/bind_internal.h:607 (browser_tests+0xa864f28)
    #54 RunImpl<void (content::BrowserTestBase::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserTestBase> > &, 0> /src/base/bind_internal.h:680 (browser_tests+0xa864f28)
    #55 base::internal::Invoker<base::internal::BindState<void (content::BrowserTestBase::*)(), base::internal::UnretainedWrapper<content::BrowserTestBase> >, void ()>::Run(base::internal::BindStateBase*) /src/base/bind_internal.h:662 (browser_tests+0xa864f28)
    #56 Run /src/base/callback.h:129:12 (browser_tests+0x9ce722d)
    #57 ChromeBrowserMainParts::PreMainMessageLoopRunImpl() /src/chrome/browser/chrome_browser_main.cc:3181 (browser_tests+0x9ce722d)
    #58 ChromeBrowserMainParts::PreMainMessageLoopRun() /src/chrome/browser/chrome_browser_main.cc:2259:18 (browser_tests+0x9ce52eb)
    #59 content::BrowserMainLoop::PreMainMessageLoopRun() /src/content/browser/browser_main_loop.cc:1021:13 (browser_tests+0x6a854c0)
    #60 Invoke<int (content::BrowserMainLoop::*)(), content::BrowserMainLoop *> /src/base/bind_internal.h:507:12 (browser_tests+0x6a88df8)
    #61 MakeItSo<int (content::BrowserMainLoop::*const &)(), content::BrowserMainLoop *> /src/base/bind_internal.h:607 (browser_tests+0x6a88df8)
    #62 RunImpl<int (content::BrowserMainLoop::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserMainLoop> > &, 0> /src/base/bind_internal.h:680 (browser_tests+0x6a88df8)
    #63 base::internal::Invoker<base::internal::BindState<int (content::BrowserMainLoop::*)(), base::internal::UnretainedWrapper<content::BrowserMainLoop> >, int ()>::Run(base::internal::BindStateBase*) /src/base/bind_internal.h:662 (browser_tests+0x6a88df8)
    #64 Run /src/base/callback.h:129:12 (browser_tests+0x726d05a)
    #65 content::StartupTaskRunner::RunAllTasksNow() /src/content/browser/startup_task_runner.cc:43 (browser_tests+0x726d05a)
    #66 content::BrowserMainLoop::CreateStartupTasks() /src/content/browser/browser_main_loop.cc:932:25 (browser_tests+0x6a8379a)
    #67 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) /src/content/browser/browser_main_runner_impl.cc:143:15 (browser_tests+0x6a893ea)
    #68 content::BrowserMain(content::MainFunctionParams const&) /src/content/browser/browser_main.cc:45:32 (browser_tests+0x6a80539)
    #69 RunBrowserProcessMain /src/content/app/content_main_runner_impl.cc:613:10 (browser_tests+0x99a6eeb)
    #70 content::ContentMainRunnerImpl::Run(bool) /src/content/app/content_main_runner_impl.cc:973 (browser_tests+0x99a6eeb)
    #71 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() /src/content/app/content_service_manager_main_delegate.cc:53:32 (browser_tests+0x99a414f)
    #72 service_manager::Main(service_manager::MainParams const&) /src/services/service_manager/embedder/main.cc:472:29 (browser_tests+0xd205c76)
    #73 content::ContentMain(content::ContentMainParams const&) /src/content/app/content_main.cc:19:10 (browser_tests+0x99a494b)
    #74 content::BrowserTestBase::SetUp() /src/content/public/test/browser_test_base.cc:322:3 (browser_tests+0xa863831)
    #75 InProcessBrowserTest::SetUp() /src/chrome/test/base/in_process_browser_test.cc:272:20 (browser_tests+0x9c3a89d)
    #76 testing::Test::Run() /src/googletest (browser_tests+0x562b70b)
    #77 testing::TestInfo::Run() /src/googletest (browser_tests+0x562c96c)
    #78 testing::TestCase::Run() /src/googletest (browser_tests+0x562d1f6)
    #79 testing::internal::UnitTestImpl::RunAllTests() /src/googletest (browser_tests+0x563d796)
    #80 testing::UnitTest::Run() /src/googletest (browser_tests+0x563d07a)
    #81 RUN_ALL_TESTS /src/googletest/include/gtest/gtest.h:2329:46 (browser_tests+0x9c5d7f5)
    #82 base::TestSuite::Run() /src/base/test/test_suite.cc:277 (browser_tests+0x9c5d7f5)
    #83 ChromeTestSuiteRunner::RunTestSuite(int, char**) /src/chrome/test/base/chrome_test_launcher.cc:65:38 (browser_tests+0x9a490f6)
    #84 ChromeTestLauncherDelegate::RunTestSuite(int, char**) /src/chrome/test/base/chrome_test_launcher.cc:74:19 (browser_tests+0x9a491ff)
    #85 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) /src/content/public/test/test_launcher.cc:650:31 (browser_tests+0xa8c08de)
    #86 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) /src/chrome/test/base/chrome_test_launcher.cc:170:10 (browser_tests+0x9a49784)
    #87 main /src/chrome/test/base/browser_tests_main.cc:36:10 (browser_tests+0x9a48fdc)

  Previous write of size 1 at 0x7b44000004d8 by thread T2:
    #0 CaptivePortalBrowserTest::SetBehindCaptivePortal(bool) /src/chrome/browser/captive_portal/captive_portal_browsertest.cc:745:28 (browser_tests+0x4eb12d8)
    #1 Invoke<void (CaptivePortalBrowserTest::*)(bool), CaptivePortalBrowserTest *, bool> /src/base/bind_internal.h:507:12 (browser_tests+0x4ed0549)
    #2 MakeItSo<void (CaptivePortalBrowserTest::*)(bool), CaptivePortalBrowserTest *, bool> /src/base/bind_internal.h:607 (browser_tests+0x4ed0549)
    #3 RunImpl<void (CaptivePortalBrowserTest::*)(bool), std::__1::tuple<base::internal::UnretainedWrapper<CaptivePortalBrowserTest>, bool>, 0, 1> /src/base/bind_internal.h:680 (browser_tests+0x4ed0549)
    #4 base::internal::Invoker<base::internal::BindState<void (CaptivePortalBrowserTest::*)(bool), base::internal::UnretainedWrapper<CaptivePortalBrowserTest>, bool>, void ()>::RunOnce(base::internal::BindStateBase*) /src/base/bind_internal.h:649 (browser_tests+0x4ed0549)
    #5 Run /src/base/callback.h:99:12 (browser_tests+0x9a92ee8)
    #6 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) /src/base/debug/task_annotator.cc:101 (browser_tests+0x9a92ee8)
    #7 base::MessageLoop::RunTask(base::PendingTask*) /src/base/message_loop/message_loop.cc:432:46 (browser_tests+0x55f355a)
    #8 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) /src/base/message_loop/message_loop.cc:443:5 (browser_tests+0x55f3e7c)
    #9 base::MessageLoop::DoWork() /src/base/message_loop/message_loop.cc:487:16 (browser_tests+0x55f41c5)
    #10 base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) /src/base/message_loop/message_pump_libevent.cc:210:31 (browser_tests+0x9bfd9b4)
    #11 base::MessageLoop::Run(bool) /src/base/message_loop/message_loop.cc:374:12 (browser_tests+0x55f2c67)
    #12 non-virtual thunk to base::MessageLoop::Run(bool) /src/base/message_loop/message_loop.cc (browser_tests+0x55f2d54)
    #13 base::RunLoop::Run() /src/base/run_loop.cc:102:14 (browser_tests+0x55f6adf)
    #14 base::Thread::Run(base::RunLoop*) /src/base/threading/thread.cc:255:13 (browser_tests+0x9b8d22b)
    #15 content::BrowserProcessSubThread::IOThreadRun(base::RunLoop*) /src/content/browser/browser_process_sub_thread.cc:184:11 (browser_tests+0x6a95a06)
    #16 content::BrowserProcessSubThread::Run(base::RunLoop*) /src/content/browser/browser_process_sub_thread.cc:134:7 (browser_tests+0x6a95913)
    #17 base::Thread::ThreadMain() /src/base/threading/thread.cc:337:3 (browser_tests+0x9b8d80b)
    #18 base::(anonymous namespace)::ThreadFunc(void*) /src/base/threading/platform_thread_posix.cc:76:13 (browser_tests+0x9bf6458)

  Location is heap block of size 288 at 0x7b44000003c0 allocated by main thread:
    #0 operator new(unsigned long) /src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:65:3 (browser_tests+0x330871d)
    #1 testing::internal::TestFactoryImpl<CaptivePortalBrowserTest_ShowCaptivePortalInterstitialOnCertError_Test>::CreateTest() /src/googletest/include/gtest/internal/gtest-internal.h:466:39 (browser_tests+0x4ed1d69)
    #2 testing::TestInfo::Run() /src/googletest (browser_tests+0x562c8ae)
    #3 testing::TestCase::Run() /src/googletest (browser_tests+0x562d1f6)
    #4 testing::internal::UnitTestImpl::RunAllTests() /src/googletest (browser_tests+0x563d796)
    #5 testing::UnitTest::Run() /src/googletest (browser_tests+0x563d07a)
    #6 RUN_ALL_TESTS /src/googletest/include/gtest/gtest.h:2329:46 (browser_tests+0x9c5d7f5)
    #7 base::TestSuite::Run() /src/base/test/test_suite.cc:277 (browser_tests+0x9c5d7f5)
    #8 ChromeTestSuiteRunner::RunTestSuite(int, char**) /src/chrome/test/base/chrome_test_launcher.cc:65:38 (browser_tests+0x9a490f6)
    #9 ChromeTestLauncherDelegate::RunTestSuite(int, char**) /src/chrome/test/base/chrome_test_launcher.cc:74:19 (browser_tests+0x9a491ff)
    #10 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) /src/content/public/test/test_launcher.cc:650:31 (browser_tests+0xa8c08de)
    #11 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) /src/chrome/test/base/chrome_test_launcher.cc:170:10 (browser_tests+0x9a49784)
    #12 main /src/chrome/test/base/browser_tests_main.cc:36:10 (browser_tests+0x9a48fdc)

  Thread T2 'Chrome_IOThread' (tid=37629, running) created by main thread at:
    #0 pthread_create /src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965:3 (browser_tests+0x329e755)
    #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) /src/base/threading/platform_thread_posix.cc:115:13 (browser_tests+0x9bf5d96)
    #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) /src/base/threading/platform_thread_posix.cc:200:10 (browser_tests+0x9bf5c55)
    #3 base::Thread::StartWithOptions(base::Thread::Options const&) /src/base/threading/thread.cc:112:15 (browser_tests+0x9b8c8c5)
    #4 content::BrowserProcessSubThread::CreateIOThread() /src/content/browser/browser_process_sub_thread.cc:97:19 (browser_tests+0x6a9560e)
    #5 content::ContentMainRunnerImpl::Run(bool) /src/content/app/content_main_runner_impl.cc:953:29 (browser_tests+0x99a6cc8)
    #6 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() /src/content/app/content_service_manager_main_delegate.cc:53:32 (browser_tests+0x99a414f)
    #7 service_manager::Main(service_manager::MainParams const&) /src/services/service_manager/embedder/main.cc:472:29 (browser_tests+0xd205c76)
    #8 content::ContentMain(content::ContentMainParams const&) /src/content/app/content_main.cc:19:10 (browser_tests+0x99a494b)
    #9 content::BrowserTestBase::SetUp() /src/content/public/test/browser_test_base.cc:322:3 (browser_tests+0xa863831)
    #10 InProcessBrowserTest::SetUp() /src/chrome/test/base/in_process_browser_test.cc:272:20 (browser_tests+0x9c3a89d)
    #11 testing::Test::Run() /src/googletest (browser_tests+0x562b70b)
    #12 testing::TestInfo::Run() /src/googletest (browser_tests+0x562c96c)
    #13 testing::TestCase::Run() /src/googletest (browser_tests+0x562d1f6)
    #14 testing::internal::UnitTestImpl::RunAllTests() /src/googletest (browser_tests+0x563d796)
    #15 testing::UnitTest::Run() /src/googletest (browser_tests+0x563d07a)
    #16 RUN_ALL_TESTS /src/googletest/include/gtest/gtest.h:2329:46 (browser_tests+0x9c5d7f5)
    #17 base::TestSuite::Run() /src/base/test/test_suite.cc:277 (browser_tests+0x9c5d7f5)
    #18 ChromeTestSuiteRunner::RunTestSuite(int, char**) /src/chrome/test/base/chrome_test_launcher.cc:65:38 (browser_tests+0x9a490f6)
    #19 ChromeTestLauncherDelegate::RunTestSuite(int, char**) /src/chrome/test/base/chrome_test_launcher.cc:74:19 (browser_tests+0x9a491ff)
    #20 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) /src/content/public/test/test_launcher.cc:650:31 (browser_tests+0xa8c08de)
    #21 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) /src/chrome/test/base/chrome_test_launcher.cc:170:10 (browser_tests+0x9a49784)
    #22 main /src/chrome/test/base/browser_tests_main.cc:36:10 (browser_tests+0x9a48fdc)

SUMMARY: ThreadSanitizer: data race chrome/browser/captive_portal/captive_portal_browsertest.cc:984:9 in CaptivePortalBrowserTest::OnIntercept(content::URLLoaderInterceptor::RequestParams*)
Change-Id: I58163d96f66f8ca3b2d257d1481b0d12f980c679
Reviewed-on: https://chromium-review.googlesource.com/c/1356582
Commit-Queue: Matt Menke <mmenke@chromium.org>
Reviewed-by: Matt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613677}
msisov pushed a commit that referenced this issue Dec 23, 2018
…esrSignin without a forced value.

Merge the patch into M71.

Bug: 894212
Change-Id: Icd4c7d9f8a79a9b57900366d4677b0e7023b8ca3
Reviewed-on: https://chromium-review.googlesource.com/c/1274196
Commit-Queue: Owen Min <zmin@chromium.org>
Reviewed-by: Mihai Sardarescu <msarda@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#599247}(cherry picked from commit df7614e)
Reviewed-on: https://chromium-review.googlesource.com/c/1284729
Reviewed-by: Owen Min <zmin@chromium.org>
Cr-Commit-Position: refs/branch-heads/3578@{#66}
Cr-Branched-From: 4226ddf-refs/heads/master@{#599034}
msisov pushed a commit that referenced this issue Jan 31, 2019
…ld sometimes not scroll to the right category on the ESP.

Bug: 910399
Change-Id: Icd9e7cc3a4974d18960458bf633c10df659f968c
Reviewed-on: https://chromium-review.googlesource.com/c/1359512
Commit-Queue: Cathy Li <chili@chromium.org>
Reviewed-by: Peter Williamson <petewil@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#613365}(cherry picked from commit 95f6901)
Reviewed-on: https://chromium-review.googlesource.com/c/1362488
Reviewed-by: Cathy Li <chili@chromium.org>
Cr-Commit-Position: refs/branch-heads/3626@{#66}
Cr-Branched-From: d897fb1-refs/heads/master@{#612437}
msisov pushed a commit that referenced this issue Mar 14, 2019
…ctivation

Add a method to cover features that was logged from the browser side.

Bug: 539938
Change-Id: I4b6cbdcb8e37afdd5862f15f2f7c877b13d30897
Reviewed-on: https://chromium-review.googlesource.com/c/1437775
Commit-Queue: Yao Xiao <yaoxia@chromium.org>
Reviewed-by: Charlie Harrison <csharrison@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#626402}(cherry picked from commit 9b54c9a)
Reviewed-on: https://chromium-review.googlesource.com/c/1444238
Cr-Commit-Position: refs/branch-heads/3683@{#66}
Cr-Branched-From: e510299-refs/heads/master@{#625896}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants