From e1b6f5ad319a5642aa345f1bcd7d7fd78cd4a1d0 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Sun, 11 Apr 2021 20:34:41 -0400 Subject: [PATCH] chrome: mac: Fix exception_port_.is_valid() failure (see issue #2969) Fixes the following startup error: FATAL:crashpad_client_mac.cc(499) Check failed: exception_port_.is_valid() --- patch/patches/chrome_runtime.patch | 31 +++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/patch/patches/chrome_runtime.patch b/patch/patches/chrome_runtime.patch index 1fc8480dd..0f7764eff 100644 --- a/patch/patches/chrome_runtime.patch +++ b/patch/patches/chrome_runtime.patch @@ -128,7 +128,7 @@ index 8a33ce57766c..ca69a37eee22 100644 #import "chrome/browser/app_controller_mac.h" #include "chrome/browser/apps/app_shim/app_shim_listener.h" #include "chrome/browser/browser_process.h" -@@ -110,6 +111,7 @@ void ChromeBrowserMainPartsMac::PreMainMessageLoopStart() { +@@ -110,6 +111,7 @@ } } @@ -136,7 +136,7 @@ index 8a33ce57766c..ca69a37eee22 100644 // Create the app delegate. This object is intentionally leaked as a global // singleton. It is accessed through -[NSApp delegate]. AppController* app_controller = [[AppController alloc] init]; -@@ -118,6 +120,7 @@ void ChromeBrowserMainPartsMac::PreMainMessageLoopStart() { +@@ -118,6 +120,7 @@ chrome::BuildMainMenu(NSApp, app_controller, l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), false); [app_controller mainMenuCreated]; @@ -144,7 +144,7 @@ index 8a33ce57766c..ca69a37eee22 100644 PrefService* local_state = g_browser_process->local_state(); DCHECK(local_state); -@@ -170,7 +173,9 @@ void ChromeBrowserMainPartsMac::PostProfileInit() { +@@ -170,7 +173,9 @@ } void ChromeBrowserMainPartsMac::DidEndMainMessageLoop() { @@ -178,6 +178,31 @@ index 29ba5f21b38f..3ce05420eb78 100644 } base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { +diff --git chrome/browser/notifications/alert_dispatcher_xpc.mm chrome/browser/notifications/alert_dispatcher_xpc.mm +index d126ddd3a24d..5e8c5ae7c093 100644 +--- chrome/browser/notifications/alert_dispatcher_xpc.mm ++++ chrome/browser/notifications/alert_dispatcher_xpc.mm +@@ -19,6 +19,7 @@ + #include "base/mac/scoped_nsobject.h" + #include "base/metrics/histogram_functions.h" + #include "base/strings/sys_string_conversions.h" ++#include "cef/libcef/features/runtime.h" + #include "chrome/browser/notifications/notification_platform_bridge_mac_utils.h" + #import "chrome/browser/ui/cocoa/notifications/notification_delivery.h" + #include "chrome/browser/ui/cocoa/notifications/xpc_mach_port.h" +@@ -180,6 +181,12 @@ - (void)notificationClick:(NSDictionary*)notificationResponseData { + - (id)serviceProxy { + id proxy = [_xpcConnection remoteObjectProxy]; + ++ // Skip exception port configuration when running CEF with crash reporting disabled. ++ if (!_setExceptionPort && cef::IsChromeRuntimeEnabled() && ++ !cef::IsCrashReportingEnabled()) { ++ _setExceptionPort = YES; ++ } ++ + if (!_setExceptionPort) { + base::mac::ScopedMachSendRight exceptionPort( + crash_reporter::GetCrashpadClient().GetHandlerMachPort()); diff --git chrome/browser/prefs/browser_prefs.cc chrome/browser/prefs/browser_prefs.cc index fbfeff04ce25..f5ab9f9bb8cf 100644 --- chrome/browser/prefs/browser_prefs.cc