diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-12 06:03:33 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-12 06:03:33 +0000 |
commit | 4fcf4f595af0ab3ea0d56584e72c8c877b25a339 (patch) | |
tree | 3bcbb18889b2e13f22e1e4dc8fff61b918ffd403 /chrome_frame/chrome_frame_automation.cc | |
parent | e2194749382acb33e16f9cb312feea67ab8a61f5 (diff) | |
download | chromium_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.cc | 10 |
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( |