From 405c7db008536354b28327159eb5a7626d0d6e79 Mon Sep 17 00:00:00 2001 From: Biru Mohanathas Date: Thu, 10 Dec 2020 19:09:01 +0200 Subject: [PATCH 1/3] fix: Avoid crashing in NativeViewHost::SetParentAccessible on Windows This fixes #26905. The patch was obtained from @deepak1556, who in turn got it from the Microsoft Teams folks. I believe the crash started happening due to the changes in https://chromium.googlesource.com/chromium/src.git/+/5c6c8e994bce2bfb867279ae5068e9f9134e70c3%5E!/#F15 This affects Electron 9 and later. Notes: Fix occasional crash on Windows --- patches/chromium/.patches | 4 +++ .../fix_setparentacessibile_crash_win.patch | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 patches/chromium/fix_setparentacessibile_crash_win.patch diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 0db64d3942608..ee7e2f2a99156 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -160,3 +160,7 @@ cherry-pick-5ffbb7ed173a.patch propagate_disable-dev-shm-usage_to_child_processes.patch cherry-pick-bbc6ab5bb49c.patch cherry-pick-ecdec1fb0f42.patch +chore_expose_v8_initialization_isolate_callbacks.patch +export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch +use_public_apis_to_determine_if_a_font_is_a_system_font_in_mas_build.patch +fix_setparentacessibile_crash_win.patch diff --git a/patches/chromium/fix_setparentacessibile_crash_win.patch b/patches/chromium/fix_setparentacessibile_crash_win.patch new file mode 100644 index 0000000000000..502100cab95eb --- /dev/null +++ b/patches/chromium/fix_setparentacessibile_crash_win.patch @@ -0,0 +1,28 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Biru Mohanathas +Date: Thu, 10 Dec 2020 19:02:37 +0200 +Subject: fix crash in NativeViewHost::SetParentAccessible + +This fixes random crashes on Windows 10. It presumably started happening +after the changes in +https://chromium.googlesource.com/chromium/src.git/+/5c6c8e994bce2bfb867279ae5068e9f9134e70c3%5E!/#F15 + +For context, see: https://github.com/electron/electron/issues/26905 + +This patch can likely be upstreamed. The crash cannot be fixed without +patching something in Chromium - this is the least invasive change. + +diff --git a/ui/views/controls/native/native_view_host.cc b/ui/views/controls/native/native_view_host.cc +index f9e1aa1b455ae49b59d53a75ae0634d0c092a130..4785f0c0368e0ab22db0cc968ad85d23a9b26240 100644 +--- a/ui/views/controls/native/native_view_host.cc ++++ b/ui/views/controls/native/native_view_host.cc +@@ -55,6 +55,9 @@ void NativeViewHost::Detach() { + } + + void NativeViewHost::SetParentAccessible(gfx::NativeViewAccessible accessible) { ++ if (!native_wrapper_.get()) ++ return; ++ + native_wrapper_->SetParentAccessible(accessible); + } + From c5185d66db6833c2494316f0819d86e68ace0ad0 Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Fri, 11 Dec 2020 10:01:02 -0800 Subject: [PATCH 2/3] Update .patches --- patches/chromium/.patches | 3 --- 1 file changed, 3 deletions(-) diff --git a/patches/chromium/.patches b/patches/chromium/.patches index ee7e2f2a99156..1cd3b4bcde301 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -160,7 +160,4 @@ cherry-pick-5ffbb7ed173a.patch propagate_disable-dev-shm-usage_to_child_processes.patch cherry-pick-bbc6ab5bb49c.patch cherry-pick-ecdec1fb0f42.patch -chore_expose_v8_initialization_isolate_callbacks.patch -export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch -use_public_apis_to_determine_if_a_font_is_a_system_font_in_mas_build.patch fix_setparentacessibile_crash_win.patch From 3ae02292bccd67270d644f7292893365dc5d58d5 Mon Sep 17 00:00:00 2001 From: Electron Bot Date: Fri, 11 Dec 2020 18:11:58 +0000 Subject: [PATCH 3/3] update patches --- patches/chromium/fix_setparentacessibile_crash_win.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/chromium/fix_setparentacessibile_crash_win.patch b/patches/chromium/fix_setparentacessibile_crash_win.patch index 502100cab95eb..10957b7cbe281 100644 --- a/patches/chromium/fix_setparentacessibile_crash_win.patch +++ b/patches/chromium/fix_setparentacessibile_crash_win.patch @@ -13,10 +13,10 @@ This patch can likely be upstreamed. The crash cannot be fixed without patching something in Chromium - this is the least invasive change. diff --git a/ui/views/controls/native/native_view_host.cc b/ui/views/controls/native/native_view_host.cc -index f9e1aa1b455ae49b59d53a75ae0634d0c092a130..4785f0c0368e0ab22db0cc968ad85d23a9b26240 100644 +index b29553ae8f7b0f8bff44bb74b725dab5d5b9fa59..f51fa29c6d76623d58c0f4eb633b26fdddc30d55 100644 --- a/ui/views/controls/native/native_view_host.cc +++ b/ui/views/controls/native/native_view_host.cc -@@ -55,6 +55,9 @@ void NativeViewHost::Detach() { +@@ -54,6 +54,9 @@ void NativeViewHost::Detach() { } void NativeViewHost::SetParentAccessible(gfx::NativeViewAccessible accessible) {