From 3da184df434f6e6f0e228af2eb77f1eac53039db Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Thu, 11 Jul 2019 17:06:38 -0400 Subject: [PATCH] apply upstream fix to resolve issue where it is dangerous to post a task with a RenderProcessHost pointer because the RenderProcessHost can go away before the task is run (causing a segfault). --- chromium-75.0.3770.100-git00281713.patch | 34 ++++++++++++++++++++++++ chromium.spec | 11 +++++++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 chromium-75.0.3770.100-git00281713.patch diff --git a/chromium-75.0.3770.100-git00281713.patch b/chromium-75.0.3770.100-git00281713.patch new file mode 100644 index 0000000..4356435 --- /dev/null +++ b/chromium-75.0.3770.100-git00281713.patch @@ -0,0 +1,34 @@ +diff -up chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713 chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc +--- chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc.git00281713 2019-07-02 09:10:38.951369854 -0400 ++++ chromium-75.0.3770.100/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc 2019-07-02 09:11:59.864642942 -0400 +@@ -12,13 +12,19 @@ + #include "chrome/browser/performance_manager/graph/process_node_impl.h" + #include "chrome/browser/performance_manager/performance_manager.h" + #include "chrome/browser/performance_manager/render_process_user_data.h" ++#include "content/public/browser/render_process_host.h" + #include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h" + + namespace { + + void BindProcessNode( +- content::RenderProcessHost* render_process_host, ++ int render_process_host_id, + resource_coordinator::mojom::ProcessCoordinationUnitRequest request) { ++ content::RenderProcessHost* render_process_host = ++ content::RenderProcessHost::FromID(render_process_host_id); ++ if (!render_process_host) ++ return; ++ + performance_manager::RenderProcessUserData* user_data = + performance_manager::RenderProcessUserData::GetForRenderProcessHost( + render_process_host); +@@ -47,8 +53,7 @@ void ChromeContentBrowserClientPerforman + blink::AssociatedInterfaceRegistry* associated_registry, + content::RenderProcessHost* render_process_host) { + registry->AddInterface( +- base::BindRepeating(&BindProcessNode, +- base::Unretained(render_process_host)), ++ base::BindRepeating(&BindProcessNode, render_process_host->GetID()), + base::SequencedTaskRunnerHandle::Get()); + + // Ideally this would strictly be a "CreateForRenderProcess", but when a diff --git a/chromium.spec b/chromium.spec index e6d9c63..a741cda 100644 --- a/chromium.spec +++ b/chromium.spec @@ -165,7 +165,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld} Name: chromium%{chromium_channel} %endif Version: %{majorversion}.0.3770.100 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A WebKit (Blink) powered web browser Url: http://www.chromium.org/Home 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) @@ -340,6 +340,9 @@ Patch145: chromium-75.0.3770.80-grpc-gettid-fix.patch # fix v8 compile with gcc # https://chromium.googlesource.com/v8/v8/+/3b8c624bda58d05aea80dd9626cd550537d6ac3f%5E%21/#F1 Patch146: chromium-75.0.3770.100-fix-v8-gcc.patch +# https://chromium.googlesource.com/chromium/src/+/00281713519dbd84b90d2996a009bf3a7e294435%5E%21/#F0 +Patch147: chromium-75.0.3770.100-git00281713.patch + # Use chromium-latest.py to generate clean tarball from released build tarballs, found here: # http://build.chromium.org/buildbot/official/ @@ -924,6 +927,7 @@ udev. %patch144 -p1 -b .pure-virtual-fix %patch145 -p1 -b .gettid-fix %patch146 -p1 -b .fix-v8-gcc +%patch147 -p1 -b .git00281713 # Change shebang in all relevant files in this directory and all subdirectories # See `man find` for how the `-exec command {} +` syntax works @@ -1922,6 +1926,11 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %changelog +* Tue Jul 2 2019 Tom Callaway - 75.0.3770.100-3 +- apply upstream fix to resolve issue where it is dangerous to post a + task with a RenderProcessHost pointer because the RenderProcessHost + can go away before the task is run (causing a segfault). + * Tue Jun 25 2019 Tom Callaway - 75.0.3770.100-2 - fix v8 compile with gcc