Page MenuHomePhabricator

Seed RNG with precision timestamps on receipt of net messages.
ClosedPublic

Authored by PiRK on Nov 5 2020, 15:41.

Details

Reviewers
Fabien
Group Reviewers
Restricted Owners Package(Owns No Changed Paths)
Restricted Project
Commits
rABCf9c9a3ff0c37: Seed RNG with precision timestamps on receipt of net messages.
Summary

PR17573:

Exposes a generic dead-simple "SeedEvent" interface, but currently just used for net messages.

This PR caused CI failures on Windows, and was patched the day after its merge with the following:

PR17670

This moves events_hasher and events_mutex into RNGState() in random.cpp. This guarantees (through the existing GetRNGState() function) that the mutex is always created before any events are added, even when that happens inside global initializers.

Fixes the issue reported here: #17573 (comment), and includes the annotation from #17666).

This is a backport of Core PR17573 and PR17670

Test Plan
cmake .. -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug
ninja all check-all

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable