From 69151a51912e330b98a6c8d859f08cce791de3a6 Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Sat, 8 Jun 2019 11:29:39 +0800 Subject: chromium: Fix crash on Fedora 30 --- chromium/chromium/chromium-gcc9-r666279.patch | 59 +++++++++++++++++++++++++++ chromium/chromium/chromium.spec | 8 +++- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 chromium/chromium/chromium-gcc9-r666279.patch diff --git a/chromium/chromium/chromium-gcc9-r666279.patch b/chromium/chromium/chromium-gcc9-r666279.patch new file mode 100644 index 0000000..0e8b680 --- /dev/null +++ b/chromium/chromium/chromium-gcc9-r666279.patch @@ -0,0 +1,59 @@ +From cdf306db81efaaaa954487585d5a5a16205a5ebd Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Wed, 5 Jun 2019 14:45:06 +0000 +Subject: [PATCH] Avoid pure virtual crash destroying RenderProcessUserData +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When RenderProcessUserData is destroyed from the destructor of +RenderProcessHostImpl, it is done in the destructor of RenderProcessHost. +At this point RemoveObserver override is already freed, so RenderProcessHost +is pure virtual. This crash happens at least building with GCC: + + at /usr/include/c++/8/ext/new_allocator.h:140 + (this=0x7fffffffcb50, __in_chrg=) at /usr/include/c++/8/bits/stl_tree.h:964 + +We need to destroy RenderProcessUserData before that happens. To do that +we can just override RenderProcessHostDestroyed. + +Bug: 910288 +Change-Id: I38107b178829b0cb7494f5333b765e5b087d82cd +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645366 +Commit-Queue: Sigurður Ásgeirsson +Reviewed-by: Sigurður Ásgeirsson +Cr-Commit-Position: refs/heads/master@{#666279} +--- + .../browser/performance_manager/render_process_user_data.cc | 5 +++++ + .../browser/performance_manager/render_process_user_data.h | 1 + + 2 files changed, 6 insertions(+) + +diff --git a/chrome/browser/performance_manager/render_process_user_data.cc b/chrome/browser/performance_manager/render_process_user_data.cc +index 2e2c199d4fff..ef6e1fbfb986 100644 +--- a/chrome/browser/performance_manager/render_process_user_data.cc ++++ b/chrome/browser/performance_manager/render_process_user_data.cc +@@ -116,4 +116,9 @@ void RenderProcessUserData::RenderProcessExited( + base::Unretained(process_node_.get()), info.exit_code)); + } + ++void RenderProcessUserData::RenderProcessHostDestroyed( ++ content::RenderProcessHost* host) { ++ host->RemoveUserData(kRenderProcessUserDataKey); ++} ++ + } // namespace performance_manager +diff --git a/chrome/browser/performance_manager/render_process_user_data.h b/chrome/browser/performance_manager/render_process_user_data.h +index ac74b1df2040..f3b4d162e6d3 100644 +--- a/chrome/browser/performance_manager/render_process_user_data.h ++++ b/chrome/browser/performance_manager/render_process_user_data.h +@@ -47,6 +47,7 @@ class RenderProcessUserData : public base::SupportsUserData::Data, + void RenderProcessExited( + content::RenderProcessHost* host, + const content::ChildProcessTerminationInfo& info) override; ++ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override; + + // All instances are linked together in a doubly linked list to allow orderly + // destruction at browser shutdown time. +-- +2.21.0 + diff --git a/chromium/chromium/chromium.spec b/chromium/chromium/chromium.spec index c4448ab..3c01d80 100644 --- a/chromium/chromium/chromium.spec +++ b/chromium/chromium/chromium.spec @@ -48,7 +48,7 @@ Name: chromium Version: 75.0.3770.80 -Release: 100%{?dist} +Release: 101%{?dist} Summary: A WebKit (Blink) powered web browser License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) @@ -96,7 +96,8 @@ Patch60: chromium-python2.patch # Pull upstream patches Patch70: chromium-angle-gcc9.patch Patch71: chromium-gcc9-r654570.patch -Patch72: chromium-gcc9-r666714.patch +Patch72: chromium-gcc9-r666279.patch +Patch73: chromium-gcc9-r666714.patch # Pull patches from Fedora # https://src.fedoraproject.org/rpms/chromium/c/9071ee2d2f996b84 @@ -640,6 +641,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %changelog +* Sat Jun 08 2019 - Ting-Wei Lan - 75.0.3770.80-101 +- Fix crash on Fedora 30 + * Fri Jun 07 2019 - Ting-Wei Lan - 75.0.3770.80-100 - Update to 75.0.3770.80 -- cgit v1.2.3