diff options
author | rsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-06 22:17:29 +0000 |
---|---|---|
committer | rsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-06 22:17:29 +0000 |
commit | 8a16e9b9da8306bd9f1b59c5d4f32a1cabf98bbf (patch) | |
tree | db8857f713ee1eb3c31fcfdfc60c81f98867065f /apps | |
parent | e460a4dc3ec3b22320dcf8da32b711f43192fd81 (diff) | |
download | chromium_src-8a16e9b9da8306bd9f1b59c5d4f32a1cabf98bbf.zip chromium_src-8a16e9b9da8306bd9f1b59c5d4f32a1cabf98bbf.tar.gz chromium_src-8a16e9b9da8306bd9f1b59c5d4f32a1cabf98bbf.tar.bz2 |
Revert 221580 "Make AppShimHostManager a RefCountedThreadSafe."
Reason for revert: Use-after-free heap errors caught by asan.
See bug 286483.
> Make AppShimHostManager a RefCountedThreadSafe.
>
> This prevents a crash when Chrome shuts down immediately and
> AppShimHostManager is destructed before InitOnFileThread is run.
> Note this means AppShimHostManager can stay around longer than
> BrowserProcessPlatformPart during initialization.
>
> Review URL: https://chromiumcodereview.appspot.com/20065004
BUG=286483,242941
TBR=jackhou@chromium.org
Review URL: https://codereview.chromium.org/24052002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221793 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_shim/app_shim_host_manager_mac.h | 8 | ||||
-rw-r--r-- | apps/app_shim/app_shim_host_manager_mac.mm | 6 |
2 files changed, 7 insertions, 7 deletions
diff --git a/apps/app_shim/app_shim_host_manager_mac.h b/apps/app_shim/app_shim_host_manager_mac.h index b8e9e04..1c088f5 100644 --- a/apps/app_shim/app_shim_host_manager_mac.h +++ b/apps/app_shim/app_shim_host_manager_mac.h @@ -6,25 +6,23 @@ #define CHROME_BROWSER_WEB_APPLICATIONS_APP_SHIM_HOST_MANAGER_MAC_H_ #include "apps/app_shim/extension_app_shim_handler_mac.h" -#include "base/memory/ref_counted.h" +#include "base/memory/weak_ptr.h" #include "ipc/ipc_channel_factory.h" // The AppShimHostManager receives connections from app shims on a UNIX // socket (|factory_|) and creates a helper object to manage the connection. class AppShimHostManager : public IPC::ChannelFactory::Delegate, - public base::RefCountedThreadSafe<AppShimHostManager> { + public base::SupportsWeakPtr<AppShimHostManager> { public: AppShimHostManager(); + virtual ~AppShimHostManager(); apps::ExtensionAppShimHandler* extension_app_shim_handler() { return &extension_app_shim_handler_; } private: - friend class base::RefCountedThreadSafe<AppShimHostManager>; - virtual ~AppShimHostManager(); - // IPC::ChannelFactory::Delegate implementation. virtual void OnClientConnected(const IPC::ChannelHandle& handle) OVERRIDE; virtual void OnListenError() OVERRIDE; diff --git a/apps/app_shim/app_shim_host_manager_mac.mm b/apps/app_shim/app_shim_host_manager_mac.mm index c364c1a..049ba5b 100644 --- a/apps/app_shim/app_shim_host_manager_mac.mm +++ b/apps/app_shim/app_shim_host_manager_mac.mm @@ -31,7 +31,8 @@ AppShimHostManager::AppShimHostManager() { apps::AppShimHandler::SetDefaultHandler(&extension_app_shim_handler_); BrowserThread::PostTask( BrowserThread::FILE, FROM_HERE, - base::Bind(&AppShimHostManager::InitOnFileThread, this)); + base::Bind(&AppShimHostManager::InitOnFileThread, + base::Unretained(this))); } AppShimHostManager::~AppShimHostManager() { @@ -51,7 +52,8 @@ void AppShimHostManager::InitOnFileThread() { factory_.reset(new IPC::ChannelFactory(socket_path, this)); BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, - base::Bind(&AppShimHostManager::ListenOnIOThread, this)); + base::Bind(&AppShimHostManager::ListenOnIOThread, + base::Unretained(this))); } void AppShimHostManager::ListenOnIOThread() { |