New issue
Advanced search Search tips

Issue 918683 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Jan 9
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows , Mac
Pri: 2
Type: Bug



Sign in to add a comment

DCHECK on "cancel downloads" dialog close

Project Member Reported by a...@chromium.org, Jan 2

Issue description

Split from  bug 916929 .

Steps to reproduce:
1. Open an incognito window; load https://speed.hetzner.de/
2. Begin a download any test file and click the *window's* close button
3. Click 'Continue Download'

Result:

[31130:1295:0102/160131.852692:ERROR:browser.cc(717)] Browser::ShouldCloseWindow
[31130:1295:0102/160131.852765:ERROR:browser.cc(2446)] Browser::CanCloseWithInProgressDownloads
[31130:1295:0102/160133.257672:FATAL:unload_controller.cc(209)] Check failed: is_attempting_to_close_browser_. 
0   libbase.dylib                       0x000000012d1328c3 base::debug::StackTrace::StackTrace(unsigned long) + 83
1   libbase.dylib                       0x000000012d13297d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x000000012ce1c64a base::debug::StackTrace::StackTrace() + 26
3   libbase.dylib                       0x000000012ce6261e logging::LogMessage::~LogMessage() + 142
4   libbase.dylib                       0x000000012ce61415 logging::LogMessage::~LogMessage() + 21
5   libchrome_dll.dylib                 0x000000010cfc49d5 UnloadController::CancelWindowClose() + 181
6   libchrome_dll.dylib                 0x000000010ce78012 Browser::InProgressDownloadResponse(bool) + 162


 
Labels: OS-Windows
Windows too!

[19628:17348:0102/165413.018:FATAL:unload_controller.cc(209)] Check failed: is_attempting_to_close_browser_.
Backtrace:
        base::debug::StackTrace::StackTrace [0x00007FF82F2F9D65+101] (C:/src/chrome/src/out/debug\..\..\base\debug\stack
_trace_win.cc:281)
        base::debug::StackTrace::StackTrace [0x00007FF82F2F8D1D+29] (C:/src/chrome/src/out/debug\..\..\base\debug\stack_
trace.cc:203)
        logging::LogMessage::~LogMessage [0x00007FF82F34A786+134] (C:/src/chrome/src/out/debug\..\..\base\logging.cc:592
)
        UnloadController::CancelWindowClose [0x00007FF826D12C23+179] (C:/src/chrome/src/out/debug\..\..\chrome\browser\u
i\unload_controller.cc:210)
        Browser::InProgressDownloadResponse [0x00007FF8259B1FF5+165] (C:/src/chrome/src/out/debug\..\..\chrome\browser\u
i\browser.cc:836)
        base::internal::FunctorTraits<void (Browser::*)(bool),void>::Invoke<void (Browser::*)(bool),const base::WeakPtr<
Browser> &,bool> [0x00007FF8259C5066+102] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:516)
        base::internal::InvokeHelper<1,void>::MakeItSo<void (Browser::*const &)(bool),const base::WeakPtr<Browser> &,boo
l> [0x00007FF8259C4F94+132] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:639)
        base::internal::Invoker<base::internal::BindState<void (Browser::*)(bool),base::WeakPtr<Browser> >,void (bool)>:
:RunImpl<void (Browser::*const &)(bool),const std::tuple<base::WeakPtr<Browser> > &,0> [0x00007FF8259C4F02+98] (C:/src/c
hrome/src/out/debug\..\..\base\bind_internal.h:689)
        base::internal::Invoker<base::internal::BindState<void (Browser::*)(bool),base::WeakPtr<Browser> >,void (bool)>:
:Run [0x00007FF8259C4E0A+106] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:671)
        base::RepeatingCallback<void (bool)>::Run [0x00007FF8223776FE+110] (C:/src/chrome/src/out/debug\..\..\base\callb
ack.h:129)
        DownloadInProgressDialogView::Cancel [0x00007FF827A408EC+28] (C:/src/chrome/src/out/debug\..\..\chrome\browser\u
i\views\download\download_in_progress_dialog_view.cc:81)
        views::DialogClientView::CancelWindow [0x00007FF821136DF0+64] (C:/src/chrome/src/out/debug\..\..\ui\views\window
\dialog_client_view.cc:101)
        views::DialogClientView::ButtonPressed [0x00007FF821137970+208] (C:/src/chrome/src/out/debug\..\..\ui\views\wind
ow\dialog_client_view.cc:251)
        views::Button::NotifyClick [0x00007FF820FE8F92+130] (C:/src/chrome/src/out/debug\..\..\ui\views\controls\button\
button.cc:547)
        views::Button::OnMouseReleased [0x00007FF820FE7B8B+235] (C:/src/chrome/src/out/debug\..\..\ui\views\controls\but
ton\button.cc:282)
        views::View::ProcessMouseReleased [0x00007FF8211086B6+246] (C:/src/chrome/src/out/debug\..\..\ui\views\view.cc:2
481)
        views::View::OnMouseEvent [0x00007FF821107EE2+274] (C:/src/chrome/src/out/debug\..\..\ui\views\view.cc:1025)
        ui::EventHandler::OnEvent [0x00007FF8460F54A2+146] (C:/src/chrome/src/out/debug\..\..\ui\events\event_handler.cc
:33)
        ui::ScopedTargetHandler::OnEvent [0x00007FF846110F8E+94] (C:/src/chrome/src/out/debug\..\..\ui\events\scoped_tar
get_handler.cc:34)
        ui::EventDispatcher::DispatchEvent [0x00007FF8460F22A9+185] (C:/src/chrome/src/out/debug\..\..\ui\events\event_d
ispatcher.cc:193)
        ui::EventDispatcher::ProcessEvent [0x00007FF8460F18B5+549] (C:/src/chrome/src/out/debug\..\..\ui\events\event_di
spatcher.cc:143)
        ui::EventDispatcherDelegate::DispatchEventToTarget [0x00007FF8460F1495+133] (C:/src/chrome/src/out/debug\..\..\u
i\events\event_dispatcher.cc:87)
        ui::EventDispatcherDelegate::DispatchEvent [0x00007FF8460F12C2+386] (C:/src/chrome/src/out/debug\..\..\ui\events
\event_dispatcher.cc:58)
        views::internal::RootView::OnMouseReleased [0x00007FF82111E52C+252] (C:/src/chrome/src/out/debug\..\..\ui\views\
widget\root_view.cc:445)
        views::Widget::OnMouseEvent [0x00007FF821128E5F+735] (C:/src/chrome/src/out/debug\..\..\ui\views\widget\widget.c
c:1249)
        views::DesktopNativeWidgetAura::OnMouseEvent [0x00007FF8211B4E7C+332] (C:/src/chrome/src/out/debug\..\..\ui\view
s\widget\desktop_aura\desktop_native_widget_aura.cc:1106)
        ui::EventHandler::OnEvent [0x00007FF8460F54A2+146] (C:/src/chrome/src/out/debug\..\..\ui\events\event_handler.cc
:33)
        ui::EventDispatcher::DispatchEvent [0x00007FF8460F22A9+185] (C:/src/chrome/src/out/debug\..\..\ui\events\event_d
ispatcher.cc:193)
        ui::EventDispatcher::ProcessEvent [0x00007FF8460F18B5+549] (C:/src/chrome/src/out/debug\..\..\ui\events\event_di
spatcher.cc:143)
        ui::EventDispatcherDelegate::DispatchEventToTarget [0x00007FF8460F1495+133] (C:/src/chrome/src/out/debug\..\..\u
i\events\event_dispatcher.cc:87)
        ui::EventDispatcherDelegate::DispatchEvent [0x00007FF8460F12C2+386] (C:/src/chrome/src/out/debug\..\..\ui\events
\event_dispatcher.cc:58)
        ui::EventProcessor::OnEventFromSource [0x00007FF8460F6C6A+1338] (C:/src/chrome/src/out/debug\..\..\ui\events\eve
nt_processor.cc:57)
        ui::EventSource::DeliverEventToSink [0x00007FF8460F84D7+215] (C:/src/chrome/src/out/debug\..\..\ui\events\event_
source.cc:49)
        ui::EventSource::SendEventToSinkFromRewriter [0x00007FF8460F807E+1390] (C:/src/chrome/src/out/debug\..\..\ui\eve
nts\event_source.cc:93)
        ui::EventSource::SendEventToSink [0x00007FF8460F7AF8+40] (C:/src/chrome/src/out/debug\..\..\ui\events\event_sour
ce.cc:43)
        views::DesktopWindowTreeHostWin::HandleMouseEvent [0x00007FF8211CCAA2+258] (C:/src/chrome/src/out/debug\..\..\ui
\views\widget\desktop_aura\desktop_window_tree_host_win.cc:914)
        views::HWNDMessageHandler::HandleMouseEventInternal [0x00007FF82114F632+1890] (C:/src/chrome/src/out/debug\..\..
\ui\views\win\hwnd_message_handler.cc:2916)
        views::HWNDMessageHandler::OnMouseRange [0x00007FF821154AC7+55] (C:/src/chrome/src/out/debug\..\..\ui\views\win\
hwnd_message_handler.cc:1883)
        views::HWNDMessageHandler::_ProcessWindowMessage [0x00007FF82114B6C9+265] (C:/src/chrome/src/out/debug\..\..\ui\
views\win\hwnd_message_handler.h:328)
        views::HWNDMessageHandler::OnWndProc [0x00007FF82114B3C9+297] (C:/src/chrome/src/out/debug\..\..\ui\views\win\hw
nd_message_handler.cc:976)
        gfx::WindowImpl::WndProc [0x00007FF83CCC2D62+386] (C:/src/chrome/src/out/debug\..\..\ui\gfx\win\window_impl.cc:3
03)
        base::win::WrappedWindowProc<&gfx::WindowImpl::WndProc> [0x00007FF83CCC1E25+53] (C:/src/chrome/src/out/debug\..\
..\base\win\wrapped_window_proc.h:76)
        CallWindowProcW [0x00007FF87676B85D+1245]
        DispatchMessageW [0x00007FF87676B1EF+431]
        base::MessagePumpForUI::ProcessMessageHelper [0x00007FF82F385942+1106] (C:/src/chrome/src/out/debug\..\..\base\m
essage_loop\message_pump_win.cc:379)
        base::MessagePumpForUI::ProcessNextWindowsMessage [0x00007FF82F384FE0+160] (C:/src/chrome/src/out/debug\..\..\ba
se\message_loop\message_pump_win.cc:350)
        base::MessagePumpForUI::DoRunLoop [0x00007FF82F384DCD+29] (C:/src/chrome/src/out/debug\..\..\base\message_loop\m
essage_pump_win.cc:175)
        base::MessagePumpWin::Run [0x00007FF82F383CEC+140] (C:/src/chrome/src/out/debug\..\..\base\message_loop\message_
pump_win.cc:54)
        base::MessageLoopImpl::Run [0x00007FF82F379ED4+532] (C:/src/chrome/src/out/debug\..\..\base\message_loop\message
_loop_impl.cc:304)
        base::RunLoop::Run [0x00007FF82F43FA44+500] (C:/src/chrome/src/out/debug\..\..\base\run_loop.cc:102)
        ChromeBrowserMainParts::MainMessageLoopRun [0x00007FF825E49A96+278] (C:/src/chrome/src/out/debug\..\..\chrome\br
owser\chrome_browser_main.cc:1861)
        content::BrowserMainLoop::RunMainMessageLoopParts [0x00007FF81BB298A9+489] (C:/src/chrome/src/out/debug\..\..\co
ntent\browser\browser_main_loop.cc:1000)
        content::BrowserMainRunnerImpl::Run [0x00007FF81BB3A3FD+333] (C:/src/chrome/src/out/debug\..\..\content\browser\
browser_main_runner_impl.cc:165)
        content::BrowserMain [0x00007FF81BB219FB+267] (C:/src/chrome/src/out/debug\..\..\content\browser\browser_main.cc
:47)
        content::RunBrowserProcessMain [0x00007FF81E597D78+168] (C:/src/chrome/src/out/debug\..\..\content\app\content_m
ain_runner_impl.cc:545)
        content::ContentMainRunnerImpl::RunServiceManager [0x00007FF81E599591+1313] (C:/src/chrome/src/out/debug\..\..\c
ontent\app\content_main_runner_impl.cc:954)
        content::ContentMainRunnerImpl::Run [0x00007FF81E598F76+614] (C:/src/chrome/src/out/debug\..\..\content\app\cont
ent_main_runner_impl.cc:868)
        content::ContentServiceManagerMainDelegate::RunEmbedderProcess [0x00007FF81E595BF7+55] (C:/src/chrome/src/out/de
bug\..\..\content\app\content_service_manager_main_delegate.cc:53)
        service_manager::Main [0x00007FFFFA2524A6+1750] (C:/src/chrome/src/out/debug\..\..\services\service_manager\embe
dder\main.cc:461)
        content::ContentMain [0x00007FF81E597C3F+95] (C:/src/chrome/src/out/debug\..\..\content\app\content_main.cc:20)
        ChromeMain [0x00007FF8218212E5+437] (C:/src/chrome/src/out/debug\..\..\chrome\app\chrome_main.cc:102)
        MainDllLoader::Launch [0x00007FF7B3F6ACC6+1126] (C:/src/chrome/src/out/debug\..\..\chrome\app\main_dll_loader_wi
n.cc:201)

[19628:17348:0102/165420.695:FATAL:unload_controller.cc(209)] Check failed: is_attempting_to_close_browser_.
Backtrace:
        base::debug::StackTrace::StackTrace [0x00007FF82F2F9D65+101] (C:/src/chrome/src/out/debug\..\..\base\debug\stack
_trace_win.cc:281)
        base::debug::StackTrace::StackTrace [0x00007FF82F2F8D1D+29] (C:/src/chrome/src/out/debug\..\..\base\debug\stack_
trace.cc:203)
        logging::LogMessage::~LogMessage [0x00007FF82F34A786+134] (C:/src/chrome/src/out/debug\..\..\base\logging.cc:592
)
        UnloadController::CancelWindowClose [0x00007FF826D12C23+179] (C:/src/chrome/src/out/debug\..\..\chrome\browser\u
i\unload_controller.cc:210)
        Browser::InProgressDownloadResponse [0x00007FF8259B1FF5+165] (C:/src/chrome/src/out/debug\..\..\chrome\browser\u
i\browser.cc:836)
        base::internal::FunctorTraits<void (Browser::*)(bool),void>::Invoke<void (Browser::*)(bool),const base::WeakPtr<
Browser> &,bool> [0x00007FF8259C5066+102] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:516)
        base::internal::InvokeHelper<1,void>::MakeItSo<void (Browser::*const &)(bool),const base::WeakPtr<Browser> &,boo
l> [0x00007FF8259C4F94+132] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:639)
        base::internal::Invoker<base::internal::BindState<void (Browser::*)(bool),base::WeakPtr<Browser> >,void (bool)>:
:RunImpl<void (Browser::*const &)(bool),const std::tuple<base::WeakPtr<Browser> > &,0> [0x00007FF8259C4F02+98] (C:/src/c
hrome/src/out/debug\..\..\base\bind_internal.h:689)
        base::internal::Invoker<base::internal::BindState<void (Browser::*)(bool),base::WeakPtr<Browser> >,void (bool)>:
:Run [0x00007FF8259C4E0A+106] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:671)
        base::RepeatingCallback<void (bool)>::Run [0x00007FF8223776FE+110] (C:/src/chrome/src/out/debug\..\..\base\callb
ack.h:129)
        DownloadInProgressDialogView::Cancel [0x00007FF827A408EC+28] (C:/src/chrome/src/out/debug\..\..\chrome\browser\u
i\views\download\download_in_progress_dialog_view.cc:81)
        views::DialogClientView::CancelWindow [0x00007FF821136DF0+64] (C:/src/chrome/src/out/debug\..\..\ui\views\window
\dialog_client_view.cc:101)
        views::DialogClientView::ButtonPressed [0x00007FF821137970+208] (C:/src/chrome/src/out/debug\..\..\ui\views\wind
ow\dialog_client_view.cc:251)
        views::Button::NotifyClick [0x00007FF820FE8F92+130] (C:/src/chrome/src/out/debug\..\..\ui\views\controls\button\
button.cc:547)
        views::Button::OnMouseReleased [0x00007FF820FE7B8B+235] (C:/src/chrome/src/out/debug\..\..\ui\views\controls\but
ton\button.cc:282)
        views::View::ProcessMouseReleased [0x00007FF8211086B6+246] (C:/src/chrome/src/out/debug\..\..\ui\views\view.cc:2
481)
        views::View::OnMouseEvent [0x00007FF821107EE2+274] (C:/src/chrome/src/out/debug\..\..\ui\views\view.cc:1025)
        ui::EventHandler::OnEvent [0x00007FF8460F54A2+146] (C:/src/chrome/src/out/debug\..\..\ui\events\event_handler.cc
:33)
        ui::ScopedTargetHandler::OnEvent [0x00007FF846110F8E+94] (C:/src/chrome/src/out/debug\..\..\ui\events\scoped_tar
get_handler.cc:34)
        ui::EventDispatcher::DispatchEvent [0x00007FF8460F22A9+185] (C:/src/chrome/src/out/debug\..\..\ui\events\event_d
ispatcher.cc:193)
        ui::EventDispatcher::ProcessEvent [0x00007FF8460F18B5+549] (C:/src/chrome/src/out/debug\..\..\ui\events\event_di
spatcher.cc:143)
        ui::EventDispatcherDelegate::DispatchEventToTarget [0x00007FF8460F1495+133] (C:/src/chrome/src/out/debug\..\..\u
i\events\event_dispatcher.cc:87)
        ui::EventDispatcherDelegate::DispatchEvent [0x00007FF8460F12C2+386] (C:/src/chrome/src/out/debug\..\..\ui\events
\event_dispatcher.cc:58)
        views::internal::RootView::OnMouseReleased [0x00007FF82111E52C+252] (C:/src/chrome/src/out/debug\..\..\ui\views\
widget\root_view.cc:445)
        views::Widget::OnMouseEvent [0x00007FF821128E5F+735] (C:/src/chrome/src/out/debug\..\..\ui\views\widget\widget.c
c:1249)
        views::DesktopNativeWidgetAura::OnMouseEvent [0x00007FF8211B4E7C+332] (C:/src/chrome/src/out/debug\..\..\ui\view
s\widget\desktop_aura\desktop_native_widget_aura.cc:1106)
        ui::EventHandler::OnEvent [0x00007FF8460F54A2+146] (C:/src/chrome/src/out/debug\..\..\ui\events\event_handler.cc
:33)
        ui::EventDispatcher::DispatchEvent [0x00007FF8460F22A9+185] (C:/src/chrome/src/out/debug\..\..\ui\events\event_d
ispatcher.cc:193)
        ui::EventDispatcher::ProcessEvent [0x00007FF8460F18B5+549] (C:/src/chrome/src/out/debug\..\..\ui\events\event_di
spatcher.cc:143)
        ui::EventDispatcherDelegate::DispatchEventToTarget [0x00007FF8460F1495+133] (C:/src/chrome/src/out/debug\..\..\u
i\events\event_dispatcher.cc:87)
        ui::EventDispatcherDelegate::DispatchEvent [0x00007FF8460F12C2+386] (C:/src/chrome/src/out/debug\..\..\ui\events
\event_dispatcher.cc:58)
        ui::EventProcessor::OnEventFromSource [0x00007FF8460F6C6A+1338] (C:/src/chrome/src/out/debug\..\..\ui\events\eve
nt_processor.cc:57)
        ui::EventSource::DeliverEventToSink [0x00007FF8460F84D7+215] (C:/src/chrome/src/out/debug\..\..\ui\events\event_
source.cc:49)
        ui::EventSource::SendEventToSinkFromRewriter [0x00007FF8460F807E+1390] (C:/src/chrome/src/out/debug\..\..\ui\eve
nts\event_source.cc:93)
        ui::EventSource::SendEventToSink [0x00007FF8460F7AF8+40] (C:/src/chrome/src/out/debug\..\..\ui\events\event_sour
ce.cc:43)
        views::DesktopWindowTreeHostWin::HandleMouseEvent [0x00007FF8211CCAA2+258] (C:/src/chrome/src/out/debug\..\..\ui
\views\widget\desktop_aura\desktop_window_tree_host_win.cc:914)
        views::HWNDMessageHandler::HandleMouseEventInternal [0x00007FF82114F632+1890] (C:/src/chrome/src/out/debug\..\..
\ui\views\win\hwnd_message_handler.cc:2916)
        views::HWNDMessageHandler::OnMouseRange [0x00007FF821154AC7+55] (C:/src/chrome/src/out/debug\..\..\ui\views\win\
hwnd_message_handler.cc:1883)
        views::HWNDMessageHandler::_ProcessWindowMessage [0x00007FF82114B6C9+265] (C:/src/chrome/src/out/debug\..\..\ui\
views\win\hwnd_message_handler.h:328)
        views::HWNDMessageHandler::OnWndProc [0x00007FF82114B3C9+297] (C:/src/chrome/src/out/debug\..\..\ui\views\win\hw
nd_message_handler.cc:976)
        gfx::WindowImpl::WndProc [0x00007FF83CCC2D62+386] (C:/src/chrome/src/out/debug\..\..\ui\gfx\win\window_impl.cc:3
03)
        base::win::WrappedWindowProc<&gfx::WindowImpl::WndProc> [0x00007FF83CCC1E25+53] (C:/src/chrome/src/out/debug\..\
..\base\win\wrapped_window_proc.h:76)
        CallWindowProcW [0x00007FF87676B85D+1245]
        DispatchMessageW [0x00007FF87676B1EF+431]
        base::MessagePumpForUI::ProcessMessageHelper [0x00007FF82F385942+1106] (C:/src/chrome/src/out/debug\..\..\base\m
essage_loop\message_pump_win.cc:379)
        base::MessagePumpForUI::ProcessPumpReplacementMessage [0x00007FF82F3854B7+599] (C:/src/chrome/src/out/debug\..\.
.\base\message_loop\message_pump_win.cc:438)
        base::MessagePumpForUI::HandleWorkMessage [0x00007FF82F384CAB+59] (C:/src/chrome/src/out/debug\..\..\base\messag
e_loop\message_pump_win.cc:269)
        base::MessagePumpForUI::MessageCallback [0x00007FF82F384212+114] (C:/src/chrome/src/out/debug\..\..\base\message
_loop\message_pump_win.cc:144)
        base::internal::FunctorTraits<bool (base::MessagePumpForUI::*)(unsigned int, unsigned long long, long long, long
 long *),void>::Invoke<bool (base::MessagePumpForUI::*)(unsigned int, unsigned long long, long long, long long *),base::
MessagePumpForUI *,unsi [0x00007FF82F38762D+189] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:516)
        base::internal::InvokeHelper<0,bool>::MakeItSo<bool (base::MessagePumpForUI::*const &)(unsigned int, unsigned lo
ng long, long long, long long *),base::MessagePumpForUI *,unsigned int,unsigned long long,long long,long long *> [0x0000
7FF82F387501+193] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:616)
        base::internal::Invoker<base::internal::BindState<bool (base::MessagePumpForUI::*)(unsigned int, unsigned long l
ong, long long, long long *),base::internal::UnretainedWrapper<base::MessagePumpForUI> >,bool (unsigned int, unsigned lo
ng long, long long, lon [0x00007FF82F3873ED+253] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:689)
        base::internal::Invoker<base::internal::BindState<bool (base::MessagePumpForUI::*)(unsigned int, unsigned long l
ong, long long, long long *),base::internal::UnretainedWrapper<base::MessagePumpForUI> >,bool (unsigned int, unsigned lo
ng long, long long, lon [0x00007FF82F3871E2+226] (C:/src/chrome/src/out/debug\..\..\base\bind_internal.h:671)
        base::RepeatingCallback<bool (unsigned int, unsigned long long, long long, long long *)>::Run [0x00007FF82F63B7F
1+225] (C:/src/chrome/src/out/debug\..\..\base\callback.h:129)
        base::win::MessageWindow::WindowProc [0x00007FF82F63B68E+606] (C:/src/chrome/src/out/debug\..\..\base\win\messag
e_window.cc:157)
        base::win::WrappedWindowProc<&base::win::MessageWindow::WindowProc> [0x00007FF82F63AA45+53] (C:/src/chrome/src/o
ut/debug\..\..\base\win\wrapped_window_proc.h:76)
        CallWindowProcW [0x00007FF87676B85D+1245]
        DispatchMessageW [0x00007FF87676B1EF+431]
        DialogBoxIndirectParamAorW [0x00007FF87678B947+967]
        DialogBoxIndirectParamAorW [0x00007FF87678B70E+398]
        SoftModalMessageBox [0x00007FF8767CFE96+2038]
        DrawStateA [0x00007FF8767CE8F0+7120]
        MessageBoxTimeoutW [0x00007FF8767CF602+402]
This is a failure of the Unload Controller. See unload_controller.h line 146:

  // Whether we are processing the beforeunload and unload events of each tab
  // in preparation for closing the browser. **UnloadController owns this state
  // rather than Browser because unload handlers are the only reason that a
  // Browser window isn't just immediately closed.**
  bool is_attempting_to_close_browser_;

Except that it's not! Joy.
Owner: shaktisahu@chromium.org
Status: Available (was: Untriaged)
Cc: dfried@chromium.org
Labels: Target-73 Hotlist-Polish
Owner: dfried@chromium.org
Status: Assigned (was: Available)
Cc: a...@chromium.org
Avi: can you expand on your comment, "except that it's not"?

You seem to have a deeper understanding of what's going on here that could be useful as I try to track down the problem.

Thanks!
The comment on UnloadController::is_attempting_to_close_browser_ says:

"UnloadController owns this state rather than Browser because unload handlers are the only reason that a Browser window isn't just immediately closed."

In Chrome 6, say, suppose you clicked "close" on a browser window. If you were lucky, the window just closed. If you were unlucky, a page in one of the tabs had a beforeunload handler that required a dialog to be shown. In that case, the closing of the window had to be suspended while the dialog is up, and the state variable of "I'm in the middle of trying to close this window but had to run a dialog; I'll get back to it later", aka |is_attempting_to_close_browser_|, was invented.

But that was it. Dealing with (before)unload handlers *was* the only reason that a browser window wouldn't just be immediately closed. That comment was correct.

-- time passes --

Later on (say a year or two on), there were complaints about closing Chrome (or the last incognito window) and losing ongoing downloads. So a dialog was added to say, "Are you sure you want to close this window? You'll lose downloads."

So now the comment on UnloadController::is_attempting_to_close_browser_ is wrong. There are now *two* reasons that a browser window isn't just immediately closed. And this now-incorrect comment is attached to |is_attempting_to_close_browser_|, and a DCHECK of the state of |is_attempting_to_close_browser_| is what's crashing here.

So there's an assumption about the use of |is_attempting_to_close_browser_| in the showing of the downloads-are-in-progress dialog that is wrong.

(BTW, all the window closing code got moved into UnloadController to allow for the creation of the FastUnloadController, which duplicates a ton of code. I'm removing the FastUnloadController, so let's coordinate your work on this with me ripping FastUnloadController out of Chromium.)
Avi,

Do you want me to hold off working on this or  Issue #916929  until you've finished your work on the unload controllers? It might make it easier to figure out what I need to do.
My work will be deleting one of them. Please investigate; any changes you make will likely just have to be copy/pasted from UnloadController to FastUnloadController.

If it turns out to be more work on your part than just a copy paste then give me a holler and I'll accelerate the deletion of FastUnloadController.
Cc: dtrainor@chromium.org
dfried@ let me know if you need anything from me/my team on this.  Thanks!
Project Member

Comment 12 by bugdroid1@chromium.org, Jan 9

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

commit 24a8e7be2b87b713f711bf40a8aa5a023c9a91f0
Author: Dana Fried <dfried@chromium.org>
Date: Wed Jan 09 18:17:27 2019

Warn user when closing last tab during download, not after close.

Creates a more general system to prompt the user when something *might*
end up closing the browser. When MaybeWarnBeforeClosing() is called,
all of the prompts are shown, and if any dialogs do result a callback
happens when they're done. Both the existing on-close logic as well as
the "we might be closing the last tab" logic use this path now.

Bug:  916929 , 918683 
Change-Id: I709bc7205ddb840023c9ca3f696ebceae9a5cee6
Reviewed-on: https://chromium-review.googlesource.com/c/1400051
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Dana Fried <dfried@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621224}
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/browser.cc
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/browser.h
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/unload_controller.cc
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.cc
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.h
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/views/tabs/tab_strip.cc
[modify] https://crrev.com/24a8e7be2b87b713f711bf40a8aa5a023c9a91f0/chrome/browser/ui/views/tabs/tab_strip_controller.h

Status: Fixed (was: Assigned)

Sign in to add a comment