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).
parent
1646709894
commit
3da184df43
@ -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
|
Loading…
Reference in new issue