diff --git a/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.cpp b/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.cpp index 46eb51d84e25..6310b8710033 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.cpp @@ -20,6 +20,7 @@ void Stats::reset() void Stats::increment(const std::string& key, uint64_t value) { + std::lock_guard lock(stats_mutex); stats[key] += value; } @@ -33,6 +34,8 @@ void Stats::time(const std::string& key, std::function f) std::string Stats::to_string() const { + std::lock_guard lock(stats_mutex); + std::vector result; result.reserve(stats.size()); for (const auto& [key, value] : stats) { @@ -48,6 +51,8 @@ std::string Stats::to_string() const std::string Stats::aggregate_to_string(const std::string& key_prefix) const { + std::lock_guard lock(stats_mutex); + uint64_t result = 0; for (const auto& [key, value] : stats) { if (key.starts_with(key_prefix)) { diff --git a/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.hpp b/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.hpp index f7d61e196cf9..b1c6da1e338a 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm_trace/stats.hpp @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -32,6 +33,7 @@ class Stats { Stats() = default; std::unordered_map stats; + mutable std::mutex stats_mutex; }; } // namespace bb::avm_trace \ No newline at end of file