diff options
author | kkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-04 20:23:36 +0000 |
---|---|---|
committer | kkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-04 20:23:36 +0000 |
commit | 3131a4bc3ef3b6f545b7dea6ea55d8419099b7b2 (patch) | |
tree | fef3b85252836c1afe7c354ba9a6e5766d8402ac /chrome/browser/child_process_host.h | |
parent | fcc2caa7b147a296f450df1d3bbcd2bc4569093e (diff) | |
download | chromium_src-3131a4bc3ef3b6f545b7dea6ea55d8419099b7b2.zip chromium_src-3131a4bc3ef3b6f545b7dea6ea55d8419099b7b2.tar.gz chromium_src-3131a4bc3ef3b6f545b7dea6ea55d8419099b7b2.tar.bz2 |
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
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46384 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/child_process_host.h')
-rw-r--r-- | chrome/browser/child_process_host.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/chrome/browser/child_process_host.h b/chrome/browser/child_process_host.h index e735940..7f0509a 100644 --- a/chrome/browser/child_process_host.h +++ b/chrome/browser/child_process_host.h @@ -113,6 +113,7 @@ class ChildProcessHost : public ResourceDispatcherHost::Receiver, // ChildProcessLauncher::Client implementation. virtual void OnProcessLaunched() {} + virtual void OnDidProcessCrashDetermined(bool did_crash); // Derived classes can override this to know if the process crashed. virtual void OnProcessCrashed() {} @@ -120,7 +121,10 @@ class ChildProcessHost : public ResourceDispatcherHost::Receiver, bool opening_channel() { return opening_channel_; } const std::string& channel_id() { return channel_id_; } - virtual bool DidChildCrash(); + // Determines whether the exited process crashed or exited normally. + // OnDidProcessCrashDetermined method will be called with the answer, + // possibly asynchronously. + virtual void DetermineDidChildCrash(); // Called when the child process goes away. virtual void OnChildDied(); @@ -140,6 +144,7 @@ class ChildProcessHost : public ResourceDispatcherHost::Receiver, virtual void OnChannelConnected(int32 peer_pid); virtual void OnChannelError(); virtual void OnProcessLaunched(); + virtual void OnDidProcessCrashDetermined(bool did_crash); private: ChildProcessHost* host_; }; |