From ac65f3884225971c1c1f8b62fa8f49d44873abe2 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Tue, 22 Jan 2019 07:56:30 +0900 Subject: [PATCH] fix: prevent double-destroy of window (#16472) --- atom/browser/api/atom_api_browser_window.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/atom/browser/api/atom_api_browser_window.cc b/atom/browser/api/atom_api_browser_window.cc index fe7797e2c0..05ebd4ab1a 100644 --- a/atom/browser/api/atom_api_browser_window.cc +++ b/atom/browser/api/atom_api_browser_window.cc @@ -182,7 +182,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());