Index: chrome/browser/zygote_host_linux.cc |
diff --git a/chrome/browser/zygote_host_linux.cc b/chrome/browser/zygote_host_linux.cc |
index f01bcf11620bb0a9a83e778fbef159f41d9f0637..ac98f5a2b6bc41f4a2b0e4bd76d75331d84d5551 100644 |
--- a/chrome/browser/zygote_host_linux.cc |
+++ b/chrome/browser/zygote_host_linux.cc |
@@ -236,6 +236,13 @@ pid_t ZygoteHost::ForkRenderer( |
return base::kNullProcessHandle; |
} |
+ const int kRendererScore = 5; |
+ AdjustRendererOOMScore(pid, kRendererScore); |
+ |
+ return pid; |
+} |
+ |
+void ZygoteHost::AdjustRendererOOMScore(base::ProcessHandle pid, int score) { |
// 1) You can't change the oom_adj of a non-dumpable process (EPERM) unless |
// you're root. Because of this, we can't set the oom_adj from the browser |
// process. |
@@ -268,27 +275,23 @@ pid_t ZygoteHost::ForkRenderer( |
selinux_valid = true; |
} |
- const int kRendererScore = 5; |
if (using_suid_sandbox_ && !selinux) { |
base::ProcessHandle sandbox_helper_process; |
- base::file_handle_mapping_vector dummy_map; |
std::vector<std::string> adj_oom_score_cmdline; |
adj_oom_score_cmdline.push_back(sandbox_binary_); |
adj_oom_score_cmdline.push_back(base::kAdjustOOMScoreSwitch); |
adj_oom_score_cmdline.push_back(base::Int64ToString(pid)); |
- adj_oom_score_cmdline.push_back(base::IntToString(kRendererScore)); |
+ adj_oom_score_cmdline.push_back(base::IntToString(score)); |
CommandLine adj_oom_score_cmd(adj_oom_score_cmdline); |
- if (base::LaunchApp(adj_oom_score_cmdline, dummy_map, false, |
+ if (base::LaunchApp(adj_oom_score_cmd, false, true, |
&sandbox_helper_process)) { |
ProcessWatcher::EnsureProcessGetsReaped(sandbox_helper_process); |
} |
} else if (!using_suid_sandbox_) { |
- if (!base::AdjustOOMScore(pid, kRendererScore)) |
- LOG(ERROR) << "Failed to adjust OOM score of renderer"; |
+ if (!base::AdjustOOMScore(pid, score)) |
+ LOG(ERROR) << "Failed to adjust OOM score of renderer with pid " << pid; |
} |
- |
- return pid; |
} |
void ZygoteHost::EnsureProcessTerminated(pid_t process) { |