summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-04 02:04:19 +0000
committerrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-04 02:04:19 +0000
commitc75da645edbe00944e180a3868a7da459d9852ca (patch)
treece8a96e6f7bb1c81fae157c083af67f296682ddb
parenta6c3c9aabb69c72ed6409686680ee0bb68f23108 (diff)
downloadchromium_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.cc20
-rw-r--r--net/http/http_cache_transaction.cc11
-rw-r--r--net/url_request/url_request_http_job.cc13
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.