Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Unified Diff: content/browser/child_process_launcher.cc

Issue 1640123005: Revert of Have each SandboxedProcessLauncherDelegate maintain a zygote. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/child_process_launcher.h ('k') | content/browser/ppapi_plugin_process_host.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/child_process_launcher.cc
diff --git a/content/browser/child_process_launcher.cc b/content/browser/child_process_launcher.cc
index a97eb3b63da5f11982fb0483379ad457d823c008..40d78e0cae0d3ceb1dbb215e067282cf0b777955 100644
--- a/content/browser/child_process_launcher.cc
+++ b/content/browser/child_process_launcher.cc
@@ -39,10 +39,8 @@
#elif defined(OS_POSIX)
#include "base/memory/singleton.h"
#include "content/browser/renderer_host/render_sandbox_host_linux.h"
-#include "content/browser/zygote_host/zygote_communication_linux.h"
#include "content/browser/zygote_host/zygote_host_impl_linux.h"
#include "content/common/child_process_sandbox_support_impl_linux.h"
-#include "content/public/browser/zygote_handle_linux.h"
#endif
#if defined(OS_POSIX)
@@ -55,7 +53,7 @@
namespace {
-typedef base::Callback<void(ZygoteHandle,
+typedef base::Callback<void(bool,
#if defined(OS_ANDROID)
base::ScopedFD,
#endif
@@ -89,7 +87,7 @@
base::Bind(&RecordHistogramsOnLauncherThread, launch_time));
base::Closure callback_on_client_thread(
- base::Bind(callback, nullptr, base::Passed(&ipcfd),
+ base::Bind(callback, false, base::Passed(&ipcfd),
base::Passed(base::Process(handle))));
if (BrowserThread::CurrentlyOn(client_thread_id)) {
callback_on_client_thread.Run();
@@ -110,15 +108,15 @@
base::CommandLine* cmd_line) {
DCHECK_CURRENTLY_ON(BrowserThread::PROCESS_LAUNCHER);
scoped_ptr<SandboxedProcessLauncherDelegate> delegate_deleter(delegate);
-#if !defined(OS_ANDROID)
- ZygoteHandle zygote = nullptr;
-#endif
#if defined(OS_WIN)
+ bool use_zygote = false;
bool launch_elevated = delegate->ShouldLaunchElevated();
#elif defined(OS_MACOSX)
+ bool use_zygote = false;
base::EnvironmentMap env = delegate->GetEnvironment();
base::ScopedFD ipcfd = delegate->TakeIpcFd();
#elif defined(OS_POSIX) && !defined(OS_ANDROID)
+ bool use_zygote = delegate->ShouldUseZygote();
base::EnvironmentMap env = delegate->GetEnvironment();
base::ScopedFD ipcfd = delegate->TakeIpcFd();
#endif
@@ -201,16 +199,8 @@
// child termination.
#if !defined(OS_MACOSX)
- ZygoteHandle* zygote_handle = delegate->GetZygote();
- // If |zygote_handle| is null, a zygote should not be used.
- if (zygote_handle) {
- // This code runs on the PROCESS_LAUNCHER thread so race conditions are not
- // an issue with the lazy initialization.
- if (*zygote_handle == nullptr) {
- *zygote_handle = CreateZygote();
- }
- zygote = *zygote_handle;
- base::ProcessHandle handle = zygote->ForkRequest(
+ if (use_zygote) {
+ base::ProcessHandle handle = ZygoteHostImpl::GetInstance()->ForkRequest(
cmd_line->argv(), std::move(files_to_register), process_type);
process = base::Process(handle);
} else
@@ -289,11 +279,13 @@
begin_launch_time);
}
BrowserThread::PostTask(client_thread_id, FROM_HERE,
- base::Bind(callback, zygote, base::Passed(&process)));
+ base::Bind(callback,
+ use_zygote,
+ base::Passed(&process)));
#endif // !defined(OS_ANDROID)
}
-void TerminateOnLauncherThread(ZygoteHandle zygote, base::Process process) {
+void TerminateOnLauncherThread(bool zygote, base::Process process) {
DCHECK_CURRENTLY_ON(BrowserThread::PROCESS_LAUNCHER);
#if defined(OS_ANDROID)
VLOG(1) << "ChromeProcess: Stopping process with handle "
@@ -309,7 +301,7 @@
if (zygote) {
// If the renderer was created via a zygote, we have to proxy the reaping
// through the zygote process.
- zygote->EnsureProcessTerminated(process.Handle());
+ ZygoteHostImpl::GetInstance()->EnsureProcessTerminated(process.Handle());
} else
#endif // !OS_MACOSX
base::EnsureProcessTerminated(std::move(process));
@@ -339,7 +331,7 @@
: client_(client),
termination_status_(base::TERMINATION_STATUS_NORMAL_TERMINATION),
exit_code_(RESULT_CODE_NORMAL_EXIT),
- zygote_(nullptr),
+ zygote_(false),
starting_(true),
#if defined(ADDRESS_SANITIZER) || defined(LEAK_SANITIZER) || \
defined(MEMORY_SANITIZER) || defined(THREAD_SANITIZER) || \
@@ -409,8 +401,8 @@
DCHECK(CalledOnValidThread());
#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
if (zygote_) {
- termination_status_ = zygote_->GetTerminationStatus(
- process_.Handle(), known_dead, &exit_code_);
+ termination_status_ = ZygoteHostImpl::GetInstance()->
+ GetTerminationStatus(process_.Handle(), known_dead, &exit_code_);
} else if (known_dead) {
termination_status_ =
base::GetKnownDeadTerminationStatus(process_.Handle(), &exit_code_);
@@ -443,7 +435,7 @@
void ChildProcessLauncher::DidLaunch(
base::WeakPtr<ChildProcessLauncher> instance,
bool terminate_on_shutdown,
- ZygoteHandle zygote,
+ bool zygote,
#if defined(OS_ANDROID)
base::ScopedFD ipcfd,
#endif
@@ -468,11 +460,12 @@
}
}
-void ChildProcessLauncher::Notify(ZygoteHandle zygote,
-#if defined(OS_ANDROID)
- base::ScopedFD ipcfd,
-#endif
- base::Process process) {
+void ChildProcessLauncher::Notify(
+ bool zygote,
+#if defined(OS_ANDROID)
+ base::ScopedFD ipcfd,
+#endif
+ base::Process process) {
DCHECK(CalledOnValidThread());
starting_ = false;
process_ = std::move(process);
« no previous file with comments | « content/browser/child_process_launcher.h ('k') | content/browser/ppapi_plugin_process_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698