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).

This commit is contained in:
Tom Callaway 2019-07-11 17:06:38 -04:00
parent 1646709894
commit 3da184df43
2 changed files with 44 additions and 1 deletions

View File

@ -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

View File

@ -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 <spot@fedoraproject.org> - 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 <spot@fedoraproject.org> - 75.0.3770.100-2
- fix v8 compile with gcc