# HG changeset patch # User cdfreire@antar.inria.fr # Date 1310395426 -7200 # Node ID 5838cba3783a9ef28447b879f845d0fae2a959f4 # Parent 52b9c759b9dd9b934563e41519daaeea1e37548b RNG fix: * SeedManager::SetSeed must force RngStream to effectively take the new seed - routing-aodv-regression: erroneusly depends on above bug (as expected in reference PCAPs), so PCAPs need regeneration * RNG SetRun (wasn't taking any effect because run was static at construction time). diff -r 52b9c759b9dd -r 5838cba3783a src/core/model/random-variable.cc --- a/src/core/model/random-variable.cc Wed Jul 13 10:02:50 2011 +0200 +++ b/src/core/model/random-variable.cc Mon Jul 11 16:43:46 2011 +0200 @@ -64,6 +64,11 @@ void SeedManager::SetSeed (uint32_t seed) { Config::SetGlobal ("RngSeed", IntegerValue (seed)); + + // A call to SeedManager::SetSeed is an explicit request for a reproducible + // state. RngStream does not re-initialize itself after setting the global + // value above, unless we explicitly call SetPackageSeed. + RngStream::SetPackageSeed(seed); } void SeedManager::SetRun (uint32_t run) diff -r 50cfaed380dc -r d210b6af8fd0 src/core/model/rng-stream.cc --- a/src/core/model/rng-stream.cc Wed Jul 13 13:44:16 2011 +0200 +++ b/src/core/model/rng-stream.cc Wed Jul 13 14:45:19 2011 +0200 @@ -305,7 +305,12 @@ RngStream::EnsureGlobalInitialized (void) { static bool initialized = false; - static uint32_t run = 0; + uint32_t run = 0; + + IntegerValue value; + g_rngRun.GetValue (value); + run = value.Get (); + if (!initialized) { initialized = true; @@ -313,10 +318,9 @@ IntegerValue value; g_rngSeed.GetValue (value); seed = value.Get (); - g_rngRun.GetValue (value); - run = value.Get (); SetPackageSeed (seed); } + return run; }