diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-04 02:04:19 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-04 02:04:19 +0000 |
commit | c75da645edbe00944e180a3868a7da459d9852ca (patch) | |
tree | ce8a96e6f7bb1c81fae157c083af67f296682ddb | |
parent | a6c3c9aabb69c72ed6409686680ee0bb68f23108 (diff) | |
download | chromium_src-c75da645edbe00944e180a3868a7da459d9852ca.zip chromium_src-c75da645edbe00944e180a3868a7da459d9852ca.tar.gz chromium_src-c75da645edbe00944e180a3868a7da459d9852ca.tar.bz2 |
Add debug info to track a crash when sleeping.
BUG=31723
TEST=none
Review URL: http://codereview.chromium.org/560039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38070 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/profile_manager.cc | 20 | ||||
-rw-r--r-- | net/http/http_cache_transaction.cc | 11 | ||||
-rw-r--r-- | net/url_request/url_request_http_job.cc | 13 |
3 files changed, 42 insertions, 2 deletions
diff --git a/chrome/browser/profile_manager.cc b/chrome/browser/profile_manager.cc index f8cb344..209c2d2 100644 --- a/chrome/browser/profile_manager.cc +++ b/chrome/browser/profile_manager.cc @@ -168,10 +168,24 @@ void ProfileManager::OnResume() { } } +#if defined(OS_WIN) +#pragma optimize("", off) +#pragma warning(disable:4748) +#endif void ProfileManager::SuspendProfile(Profile* profile) { - DCHECK(profile); + CHECK(profile); DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); + // TODO(rvargas): remove this after finding the cause for bug 31723. + URLRequestJob* job_list[50] = { NULL }; + int count = 0; + for (URLRequestJobTracker::JobIterator i = g_url_request_job_tracker.begin(); + i != g_url_request_job_tracker.end(); ++i) { + if (count < 50) + job_list[count] = *i; + count++; + } + for (URLRequestJobTracker::JobIterator i = g_url_request_job_tracker.begin(); i != g_url_request_job_tracker.end(); ++i) (*i)->Kill(); @@ -179,6 +193,10 @@ void ProfileManager::SuspendProfile(Profile* profile) { profile->GetRequestContext()->GetURLRequestContext()-> http_transaction_factory()->Suspend(true); } +#if defined(OS_WIN) +#pragma warning(default:4748) +#pragma optimize("", on) +#endif void ProfileManager::ResumeProfile(Profile* profile) { DCHECK(profile); diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc index 7c56627..3be313f 100644 --- a/net/http/http_cache_transaction.cc +++ b/net/http/http_cache_transaction.cc @@ -130,7 +130,14 @@ HttpCache::Transaction::Transaction(HttpCache* cache, bool enable_range_support) Invalid_number_of_validation_headers); } +#if defined(OS_WIN) +#pragma optimize("", off) +#pragma warning(disable:4748) +#endif HttpCache::Transaction::~Transaction() { + // TODO(rvargas): remove this after finding the cause for bug 31723. + char local_obj[sizeof(*this)]; + memcpy(local_obj, this, sizeof(local_obj)); if (cache_) { if (entry_) { bool cancel_request = reading_ && enable_range_support_; @@ -157,6 +164,10 @@ HttpCache::Transaction::~Transaction() { // cache_ pointer to signal that we are dead. See DoCacheReadCompleted. cache_.reset(); } +#if defined(OS_WIN) +#pragma warning(default:4748) +#pragma optimize("", on) +#endif int HttpCache::Transaction::Start(const HttpRequestInfo* request, CompletionCallback* callback, diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 15b3373..25b0f33 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -569,12 +569,23 @@ void URLRequestHttpJob::NotifyHeadersComplete() { URLRequestJob::NotifyHeadersComplete(); } +#if defined(OS_WIN) +#pragma optimize("", off) +#pragma warning(disable:4748) +#endif void URLRequestHttpJob::DestroyTransaction() { - DCHECK(transaction_.get()); + CHECK(transaction_.get()); + // TODO(rvargas): remove this after finding the cause for bug 31723. + char local_obj[sizeof(*this)]; + memcpy(local_obj, this, sizeof(local_obj)); transaction_.reset(); response_info_ = NULL; } +#if defined(OS_WIN) +#pragma warning(default:4748) +#pragma optimize("", on) +#endif void URLRequestHttpJob::StartTransaction() { // NOTE: This method assumes that request_info_ is already setup properly. |