summaryrefslogtreecommitdiffstats
path: root/chrome/browser/nacl_host
diff options
context:
space:
mode:
authorkkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-05 02:41:38 +0000
committerkkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-05 02:41:38 +0000
commitcd69619bc053d527b7c82aac81c605157b28d01f (patch)
treef5a50afb86bd0ee0e0dae9a23213dcfaf1b9105e /chrome/browser/nacl_host
parent980dbfd913c463f5fa8f1b5943327fe5e4799b20 (diff)
downloadchromium_src-cd69619bc053d527b7c82aac81c605157b28d01f.zip
chromium_src-cd69619bc053d527b7c82aac81c605157b28d01f.tar.gz
chromium_src-cd69619bc053d527b7c82aac81c605157b28d01f.tar.bz2
Revert 46384 - Fix race in zygote_host_linux where socket was being read from and written to on different threads.
Made ZygoteHost methods all run on PROCESS_LAUNCHER thread. PostTask in linux from UI thread to PROCESS_LAUNCHER thread for DidProcessCrash. Changed DidProcessCrash to answer via a callback, which occurs asynchronously on linux. Rework cases in nacl_host, browser_render_process_host, and child_process_host where this method was being called to fit the callback model. BUG=31737 TEST=none Review URL: http://codereview.chromium.org/1695026 TBR=kkania@chromium.org Review URL: http://codereview.chromium.org/1933007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46429 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/nacl_host')
-rw-r--r--chrome/browser/nacl_host/nacl_process_host.cc17
-rw-r--r--chrome/browser/nacl_host/nacl_process_host.h3
2 files changed, 5 insertions, 15 deletions
diff --git a/chrome/browser/nacl_host/nacl_process_host.cc b/chrome/browser/nacl_host/nacl_process_host.cc
index 0310e39..2648b3e 100644
--- a/chrome/browser/nacl_host/nacl_process_host.cc
+++ b/chrome/browser/nacl_host/nacl_process_host.cc
@@ -117,19 +117,10 @@ void NaClProcessHost::OnProcessLaunchedByBroker(base::ProcessHandle handle) {
OnProcessLaunched();
}
-void NaClProcessHost::DetermineDidChildCrash() {
- // Either of these paths will lead to deleting this object in
- // OnDidProcessCrashDetermined in ChildProcessHost, so they should be the
- // last calls in this method.
- if (running_on_wow64_) {
- bool did_crash = base::DidProcessCrash(NULL, handle());
- OnDidProcessCrashDetermined(did_crash);
- } else {
- // Determine whether the process crashed or not. This method will invoke
- // OnDidProcessCrashDetermined with the result. This may occur
- // asynchronously.
- ChildProcessHost::DetermineDidChildCrash();
- }
+bool NaClProcessHost::DidChildCrash() {
+ if (running_on_wow64_)
+ return base::DidProcessCrash(NULL, handle());
+ return ChildProcessHost::DidChildCrash();
}
void NaClProcessHost::OnChildDied() {
diff --git a/chrome/browser/nacl_host/nacl_process_host.h b/chrome/browser/nacl_host/nacl_process_host.h
index b6c3313..28893fc 100644
--- a/chrome/browser/nacl_host/nacl_process_host.h
+++ b/chrome/browser/nacl_host/nacl_process_host.h
@@ -36,8 +36,7 @@ class NaClProcessHost : public ChildProcessHost {
void OnProcessLaunchedByBroker(base::ProcessHandle handle);
protected:
- // Override ChildProcessHost methods.
- virtual void DetermineDidChildCrash();
+ virtual bool DidChildCrash();
virtual void OnChildDied();
private: