summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorrsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-06 22:17:29 +0000
committerrsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-06 22:17:29 +0000
commit8a16e9b9da8306bd9f1b59c5d4f32a1cabf98bbf (patch)
treedb8857f713ee1eb3c31fcfdfc60c81f98867065f /apps
parente460a4dc3ec3b22320dcf8da32b711f43192fd81 (diff)
downloadchromium_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.h8
-rw-r--r--apps/app_shim/app_shim_host_manager_mac.mm6
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() {