summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-24 00:17:23 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-24 00:17:23 +0000
commitb07408332337cd6f10b31e87cbed0886e872fa93 (patch)
tree5c4528028ebed3c28333f2643993cfecf8fb0de6
parent18597e6c4c13dba7da60255912572a6c133c455d (diff)
downloadchromium_src-b07408332337cd6f10b31e87cbed0886e872fa93.zip
chromium_src-b07408332337cd6f10b31e87cbed0886e872fa93.tar.gz
chromium_src-b07408332337cd6f10b31e87cbed0886e872fa93.tar.bz2
The function to send out ChromeFrame histograms can be invoked from multiple threads in IE.
This causes the histogram snapshots to get corrupted. Fix is to synchronize access to the function which gathers these histograms. Fixes bugs http://code.google.com/p/chromium/issues/detail?id=36500 http://code.google.com/p/chromium/issues/detail?id=36510 Bug=36500,36510 Review URL: http://codereview.chromium.org/657023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39817 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome_frame/chrome_frame_histograms.cc2
-rw-r--r--chrome_frame/chrome_frame_histograms.h3
2 files changed, 5 insertions, 0 deletions
diff --git a/chrome_frame/chrome_frame_histograms.cc b/chrome_frame/chrome_frame_histograms.cc
index 904cbec..f7592e4 100644
--- a/chrome_frame/chrome_frame_histograms.cc
+++ b/chrome_frame/chrome_frame_histograms.cc
@@ -22,6 +22,8 @@ ChromeFrameHistogramSnapshots::ChromeFrameHistogramSnapshots() {
ChromeFrameHistogramSnapshots::HistogramPickledList
ChromeFrameHistogramSnapshots::GatherAllHistograms() {
+ AutoLock auto_lock(lock_);
+
StatisticsRecorder::Histograms histograms;
StatisticsRecorder::GetHistograms(&histograms);
diff --git a/chrome_frame/chrome_frame_histograms.h b/chrome_frame/chrome_frame_histograms.h
index 03aaab5..0e7e600 100644
--- a/chrome_frame/chrome_frame_histograms.h
+++ b/chrome_frame/chrome_frame_histograms.h
@@ -48,6 +48,9 @@ class ChromeFrameHistogramSnapshots {
// histogram) so that we can send only the delta with the next log.
LoggedSampleMap logged_samples_;
+ // Synchronizes the histogram gathering operation.
+ Lock lock_;
+
DISALLOW_COPY_AND_ASSIGN(ChromeFrameHistogramSnapshots);
};