commit e416ceb191fa05045277310a92f56367d3724783
parent 259f001882ee462540fc64b120e298320ecaf5c8
Author: Timothy Nikkel <tnikkel@gmail.com>
Date: Wed, 15 Oct 2025 03:11:17 +0000
Bug 1991458. r=gfx-reviewers,nical,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D267389
Diffstat:
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
@@ -198,7 +198,9 @@ class CrashStatsLogForwarder : public mozilla::gfx::LogForwarder {
private:
// Helper for the Log()
- void UpdateCrashReport();
+ void UpdateCrashReport(const MutexAutoLock& aProofOfLock);
+ bool UpdateStringsVectorInternal(const std::string& aString,
+ const MutexAutoLock& aProofOfLock);
private:
LoggingRecord mBuffer;
@@ -227,6 +229,12 @@ LoggingRecord CrashStatsLogForwarder::LoggingRecordCopy() {
}
bool CrashStatsLogForwarder::UpdateStringsVector(const std::string& aString) {
+ MutexAutoLock lock(mMutex);
+ return UpdateStringsVectorInternal(aString, lock);
+}
+
+bool CrashStatsLogForwarder::UpdateStringsVectorInternal(
+ const std::string& aString, const MutexAutoLock& aProofOfLock) {
// We want at least the first one and the last one. Otherwise, no point.
if (mMaxCapacity < 2) {
return false;
@@ -254,7 +262,8 @@ bool CrashStatsLogForwarder::UpdateStringsVector(const std::string& aString) {
return true;
}
-void CrashStatsLogForwarder::UpdateCrashReport() {
+void CrashStatsLogForwarder::UpdateCrashReport(
+ const MutexAutoLock& aProofOfLock) {
std::stringstream message;
std::string logAnnotation;
@@ -321,8 +330,8 @@ void CrashStatsLogForwarder::Log(const std::string& aString) {
PROFILER_MARKER_TEXT("gfx::CriticalError", GRAPHICS, {},
nsDependentCString(aString.c_str()));
- if (UpdateStringsVector(aString)) {
- UpdateCrashReport();
+ if (UpdateStringsVectorInternal(aString, lock)) {
+ UpdateCrashReport(lock);
}
// Add it to the parent strings