summaryrefslogtreecommitdiffstats
path: root/chrome/common/process_watcher_posix.cc
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-10 23:04:55 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-10 23:04:55 +0000
commit361e25c6d29fdae737b5ddf846606093b5502187 (patch)
tree3114ddee1266088582391d5be9d0ab7aecbd5b8d /chrome/common/process_watcher_posix.cc
parentc6b652b9298b037d8a18dd241061122200019dba (diff)
downloadchromium_src-361e25c6d29fdae737b5ddf846606093b5502187.zip
chromium_src-361e25c6d29fdae737b5ddf846606093b5502187.tar.gz
chromium_src-361e25c6d29fdae737b5ddf846606093b5502187.tar.bz2
Linux: refactor zygote support
http://code.google.com/p/chromium/wiki/LinuxZygote * Move Chrome specific bits out of base * Move away from the idea of reserved file descriptors (which don't really work with zygotes) * Load resources before forking renderers (means that we don't need communication between the zygote process and the renderers) * Make sure that gdb works against the browser again * Make sure that we have different ASLR between the renderers and the browser. http://codereview.chromium.org/119335 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18109 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/process_watcher_posix.cc')
-rw-r--r--chrome/common/process_watcher_posix.cc15
1 files changed, 1 insertions, 14 deletions
diff --git a/chrome/common/process_watcher_posix.cc b/chrome/common/process_watcher_posix.cc
index 497b80b..f1ae4f4 100644
--- a/chrome/common/process_watcher_posix.cc
+++ b/chrome/common/process_watcher_posix.cc
@@ -11,7 +11,6 @@
#include "base/eintr_wrapper.h"
#include "base/platform_thread.h"
-#include "base/zygote_manager.h"
// Return true if the given child is dead. This will also reap the process.
// Doesn't block.
@@ -70,20 +69,8 @@ class BackgroundReaper : public PlatformThread::Delegate {
// static
void ProcessWatcher::EnsureProcessTerminated(base::ProcessHandle process) {
// If the child is already dead, then there's nothing to do
- const int result = HANDLE_EINTR(waitpid(process, NULL, WNOHANG));
- if (result > 0)
+ if (IsChildDead(process))
return;
- if (result == -1) {
-#if defined(OS_LINUX)
- // If it wasn't our child, maybe it was the zygote manager's child
- base::ZygoteManager* zm = base::ZygoteManager::Get();
- if (zm) {
- zm->EnsureProcessTerminated(process);
- return;
- }
-#endif // defined(OS_LINUX)
- NOTREACHED();
- }
BackgroundReaper* reaper = new BackgroundReaper(process);
PlatformThread::CreateNonJoinable(0, reaper);