diff --git a/atom/browser/api/atom_api_browser_window.cc b/atom/browser/api/atom_api_browser_window.cc index e873f77af0ff2..b54e7d42b87b6 100644 --- a/atom/browser/api/atom_api_browser_window.cc +++ b/atom/browser/api/atom_api_browser_window.cc @@ -185,7 +185,14 @@ bool BrowserWindow::OnMessageReceived(const IPC::Message& message, } void BrowserWindow::OnCloseContents() { - DCHECK(web_contents()); + // On some machines it may happen that the window gets destroyed for twice, + // checking web_contents() can effectively guard against that. + // https://github.com/electron/electron/issues/16202. + // + // TODO(zcbenz): We should find out the root cause and improve the closing + // procedure of BrowserWindow. + if (!web_contents()) + return; // Close all child windows before closing current window. v8::Locker locker(isolate());