Chrome Version: (72.0.3624.0)
OS: Observed on Windows but most likely all.
What steps will reproduce the problem?
(0). Chrome must be build with gn flag dcheck_always_on = true
(1). Go any site and try to download a file that may be marked dangerous (on my end I was downloading a .zip file that was shared through google drive).
(2) Chrome will warn you that the file is not commonly downloaded and may be dangerous.
(3) Click on the ^ to try to download the file anyways
What is the expected result?
Chrome crashes 100%
What happens instead?
Chrome brings up the context menu to allow you to download the file anyways.
Code crashes on the following line:
DCHECK(WantsContextMenu(download_));
I suspect the logic of the function WantsContextMenu is inverted.
The callstack of the crash is:
chrome.dll!base::debug::BreakDebugger() Line 27 C++
chrome.dll!logging::LogMessage::~LogMessage() Line 876 C++
> chrome.dll!DownloadShelfContextMenu::GetMenuModel() Line 40 C++
chrome.dll!DownloadShelfContextMenuView::Run(views::Widget * parent_widget, const gfx::Rect & rect, ui::MenuSourceType source_type, const base::RepeatingCallback<void ()> & on_menu_closed_callback) Line 27 C++
chrome.dll!DownloadItemView::ShowContextMenuImpl(const gfx::Rect & rect, ui::MenuSourceType source_type) Line 802 C++
chrome.dll!DownloadItemView::ButtonPressed(views::Button * sender, const ui::Event & event) Line 546 C++
chrome.dll!views::Button::OnMouseReleased(const ui::MouseEvent & event) Line 279 C++
chrome.dll!ui::ScopedTargetHandler::OnEvent(ui::Event * event) Line 34 C++
chrome.dll!ui::EventDispatcher::DispatchEvent(ui::EventHandler * handler, ui::Event * event) Line 194 C++
chrome.dll!ui::EventDispatcher::ProcessEvent(ui::EventTarget * target, ui::Event * event) Line 143 C++
chrome.dll!ui::EventDispatcherDelegate::DispatchEventToTarget(ui::EventTarget * target, ui::Event * event) Line 87 C++
chrome.dll!ui::EventDispatcherDelegate::DispatchEvent(ui::EventTarget * target, ui::Event * event) Line 58 C++
chrome.dll!views::internal::RootView::OnMouseReleased(const ui::MouseEvent & event) Line 447 C++
chrome.dll!views::Widget::OnMouseEvent(ui::MouseEvent * event) Line 1241 C++
chrome.dll!views::DesktopNativeWidgetAura::OnMouseEvent(ui::MouseEvent * event) Line 1104 C++
chrome.dll!ui::EventDispatcher::DispatchEvent(ui::EventHandler * handler, ui::Event * event) Line 194 C++
chrome.dll!ui::EventDispatcher::ProcessEvent(ui::EventTarget * target, ui::Event * event) Line 143 C++
chrome.dll!ui::EventDispatcherDelegate::DispatchEventToTarget(ui::EventTarget * target, ui::Event * event) Line 87 C++
chrome.dll!ui::EventDispatcherDelegate::DispatchEvent(ui::EventTarget * target, ui::Event * event) Line 58 C++
chrome.dll!ui::EventProcessor::OnEventFromSource(ui::Event * event) Line 57 C++
chrome.dll!ui::EventSource::DeliverEventToSink(ui::Event * event) Line 106 C++
chrome.dll!ui::EventSource::SendEventToSinkFromRewriter(ui::Event * event, const ui::EventRewriter * rewriter) Line 85 C++
chrome.dll!ui::EventSource::SendEventToSink(ui::Event * event) Line 43 C++
chrome.dll!views::DesktopWindowTreeHostWin::HandleGestureEvent(ui::GestureEvent * event) Line 904 C++
chrome.dll!views::HWNDMessageHandler::HandleMouseEventInternal(unsigned int message, unsigned __int64 w_param, __int64 l_param, bool track_mouse) Line 2907 C++
chrome.dll!views::HWNDMessageHandler::_ProcessWindowMessage(HWND__ * hWnd, unsigned int uMsg, unsigned __int64 wParam, __int64 lParam, __int64 & lResult, unsigned long dwMsgMapID) Line 0 C++
chrome.dll!views::HWNDMessageHandler::OnWndProc(unsigned int message, unsigned __int64 w_param, __int64 l_param) Line 976 C++
chrome.dll!gfx::WindowImpl::WndProc(HWND__ * hwnd, unsigned int message, unsigned __int64 w_param, __int64 l_param) Line 303 C++
chrome.dll!base::win::WrappedWindowProc<&gfx::WindowImpl::WndProc>(HWND__ * hwnd, unsigned int message, unsigned __int64 wparam, __int64 lparam) Line 79 C++
[External Code]
chrome.dll!base::MessagePumpForUI::ProcessMessageHelper(const tagMSG & msg) Line 380 C++
chrome.dll!base::MessagePumpForUI::DoRunLoop() Line 175 C++
chrome.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 54 C++
chrome.dll!base::MessageLoopImpl::Run(bool application_tasks_allowed) Line 328 C++
chrome.dll!base::RunLoop::Run() Line 105 C++
chrome.dll!ChromeBrowserMainParts::MainMessageLoopRun(int * result_code) Line 1890 C++
chrome.dll!content::BrowserMainLoop::RunMainMessageLoopParts() Line 1001 C++
chrome.dll!content::BrowserMainRunnerImpl::Run() Line 166 C++
chrome.dll!content::BrowserMain(const content::MainFunctionParams & parameters) Line 47 C++
chrome.dll!content::RunBrowserProcessMain(const content::MainFunctionParams & main_function_params, content::ContentMainDelegate * delegate) Line 543 C++
chrome.dll!content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams & main_params, bool start_service_manager_only) Line 941 C++
chrome.dll!content::ContentMainRunnerImpl::Run(bool start_service_manager_only) Line 0 C++
chrome.dll!service_manager::Main(const service_manager::MainParams & params) Line 472 C++
chrome.dll!content::ContentMain(const content::ContentMainParams & params) Line 19 C++
chrome.dll!ChromeMain(HINSTANCE__ * instance, sandbox::SandboxInterfaceInfo * sandbox_info, __int64 exe_entry_point_ticks) Line 0 C++
chrome.exe!MainDllLoader::Launch(HINSTANCE__ * instance, base::TimeTicks exe_entry_point_ticks) Line 201 C++
chrome.exe!wWinMain(HINSTANCE__ * instance, HINSTANCE__ * prev, wchar_t *, int) Line 229 C++