Browse Source

k_system_control: Fix data race

`return distribution(gen)` is a data race between a read and a write in
two threads, reported by TSan. Remove static random number generators so
they aren't using the same generator.
pull/15/merge
lat9nq 4 years ago
parent
commit
b976cac49d
  1. 6
      src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp

6
src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp

@ -148,9 +148,9 @@ u64 GenerateUniformRange(u64 min, u64 max, F f) {
} // Anonymous namespace } // Anonymous namespace
u64 KSystemControl::GenerateRandomU64() { u64 KSystemControl::GenerateRandomU64() {
static std::random_device device;
static std::mt19937 gen(device());
static std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
std::random_device device;
std::mt19937 gen(device());
std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
return distribution(gen); return distribution(gen);
} }

Loading…
Cancel
Save