diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-17 04:14:09 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-17 04:14:09 +0000 |
commit | dfab59e7797379e752a1570f3be4750826133461 (patch) | |
tree | bc4a3342f5aae5db09912455144fe8b123eb6dbb | |
parent | c7aedfb3adf66e0942b831ca03cfc3c25fb30a29 (diff) | |
download | chromium_src-dfab59e7797379e752a1570f3be4750826133461.zip chromium_src-dfab59e7797379e752a1570f3be4750826133461.tar.gz chromium_src-dfab59e7797379e752a1570f3be4750826133461.tar.bz2 |
Stop upload thread when stopping service. Leaked thread may crash process on exit.
BUG=64388
TEST=none
Review URL: http://codereview.chromium.org/5845004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69516 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome_frame/metrics_service.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/chrome_frame/metrics_service.cc b/chrome_frame/metrics_service.cc index 387305f..d82e16b 100644 --- a/chrome_frame/metrics_service.cc +++ b/chrome_frame/metrics_service.cc @@ -123,7 +123,8 @@ struct UploadThreadInstanceTraits // started on. We don't have a good way of achieving this at this point. This // thread object is currently leaked. // TODO(ananta) -// Fix this. +// TODO(vitalybuka@chromium.org) : Fix this by using MetricsService::Stop() in +// appropriate location. base::LazyInstance<base::Thread, UploadThreadInstanceTraits> g_metrics_upload_thread_(base::LINKER_INITIALIZED); @@ -414,10 +415,15 @@ void MetricsService::Start() { // static void MetricsService::Stop() { - AutoLock lock(metrics_service_lock_); + { + AutoLock lock(metrics_service_lock_); + + GetInstance()->SetReporting(false); + GetInstance()->SetRecording(false); + } - GetInstance()->SetReporting(false); - GetInstance()->SetRecording(false); + if (GetInstance()->user_permits_upload_) + g_metrics_upload_thread_.Get().Stop(); } void MetricsService::SetRecording(bool enabled) { |