diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-02 20:47:03 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-02 20:47:03 +0000 |
commit | 132f9940b41020e1736d0c4df793d7626a67dcee (patch) | |
tree | 1ac4f364ae7ae6671ea99fa6a428e9be914e79fd | |
parent | d6d995c331449c33877bcc0fe64439f3ed75751a (diff) | |
download | chromium_src-132f9940b41020e1736d0c4df793d7626a67dcee.zip chromium_src-132f9940b41020e1736d0c4df793d7626a67dcee.tar.gz chromium_src-132f9940b41020e1736d0c4df793d7626a67dcee.tar.bz2 |
Merge 108010 - Relanding this.
Fix a ChromeFrame crash which occurs in the background worker thread while
dereferencing a NULL automation client.
This crash occurs when the active document is in the process of shutting down
while there are active background
requests still pending.
Fix is to ensure that the background thread has been stopped before returning
from the UrlmonUrlRequestManager::StopAll
function which gets called during CF shutdown.
Fixes bug http://code.google.com/p/chromium/issues/detail?id=102393
BUG=102393
TBR=robertshield
Review URL: http://codereview.chromium.org/8384019
TBR=ananta@chromium.org
Review URL: http://codereview.chromium.org/8439052
git-svn-id: svn://svn.chromium.org/chrome/branches/912/src@108344 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome_frame/urlmon_url_request.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/chrome_frame/urlmon_url_request.cc b/chrome_frame/urlmon_url_request.cc index 9bade03..ea75ccf 100644 --- a/chrome_frame/urlmon_url_request.cc +++ b/chrome_frame/urlmon_url_request.cc @@ -1261,6 +1261,8 @@ void UrlmonUrlRequestManager::StopAll() { NewRunnableMethod( this, &UrlmonUrlRequestManager::StopAllRequestsHelper, &background_request_map_, &background_resource_map_lock_)); + background_thread_->Stop(); + background_thread_.reset(); } } @@ -1374,8 +1376,6 @@ UrlmonUrlRequestManager::UrlmonUrlRequestManager() UrlmonUrlRequestManager::~UrlmonUrlRequestManager() { StopAll(); - if (background_worker_thread_enabled_) - background_thread_->Stop(); } void UrlmonUrlRequestManager::AddPrivacyDataForUrl( |