summaryrefslogtreecommitdiffstats
path: root/chrome_frame/chrome_frame_automation.cc
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-12 06:03:33 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-12 06:03:33 +0000
commit4fcf4f595af0ab3ea0d56584e72c8c877b25a339 (patch)
tree3bcbb18889b2e13f22e1e4dc8fff61b918ffd403 /chrome_frame/chrome_frame_automation.cc
parente2194749382acb33e16f9cb312feea67ab8a61f5 (diff)
downloadchromium_src-4fcf4f595af0ab3ea0d56584e72c8c877b25a339.zip
chromium_src-4fcf4f595af0ab3ea0d56584e72c8c877b25a339.tar.gz
chromium_src-4fcf4f595af0ab3ea0d56584e72c8c877b25a339.tar.bz2
Attempt to fix chrome frame tests crash on the IE6 builder. The crash occurs when ProxyCache singleton
object is being torn down with valid AutomationProxyCache entries. These objects in turn try to take down the AutomationProxy which causes a crash in the sync channel while dereferencing a NULL message loop. This appears to be a sideeffect of the changes to display a sad tab in ChromeFrame when chrome crashes. Proposed hack/fix is to leak the automation proxy in this case, which basically falls back to the old behavior. The correct fix would be to refactor/fix the AutomationProxy code to avoid the use of the sync channel if possible. TBR=tommi Review URL: http://codereview.chromium.org/3159009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55849 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/chrome_frame_automation.cc')
-rw-r--r--chrome_frame/chrome_frame_automation.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/chrome_frame/chrome_frame_automation.cc b/chrome_frame/chrome_frame_automation.cc
index 32c4749..216b7a9 100644
--- a/chrome_frame/chrome_frame_automation.cc
+++ b/chrome_frame/chrome_frame_automation.cc
@@ -214,6 +214,16 @@ AutomationProxyCacheEntry::AutomationProxyCacheEntry(
AutomationProxyCacheEntry::~AutomationProxyCacheEntry() {
DLOG(INFO) << __FUNCTION__ << profile_name;
+ // Attempt to fix chrome_frame_tests crash seen at times on the IE6/IE7
+ // builders. It appears that there are cases when we can enter here when the
+ // AtExitManager is tearing down the global ProxyCache which causes a crash
+ // while tearing down the AutomationProxy object due to a NULL MessageLoop
+ // The AutomationProxy class uses the SyncChannel which assumes the existence
+ // of a MessageLoop instance.
+ // We leak the AutomationProxy pointer here to avoid a crash.
+ if (MessageLoop::current() == NULL) {
+ proxy_.release();
+ }
}
void AutomationProxyCacheEntry::StartSendUmaInterval(