Uninitialised rng state

M Joonas Pihlaja jpihlaja@cc.helsinki.fi
Sat Feb 7 06:30:00 GMT 2009


Hi gsl-l,

Valgrind complains about using uninitialised memory when 
accessing all gsl_rng_size() bytes of the gsl_rng_state() arrays 
returned by some rng types.

One example is mt19937 whose state has lots of unsigned longs 
followed by an int.  On a 64 bit machine the size of the state is 
5000 bytes of which 4 bytes are pad bytes inserted by the 
compiler due to the mix of int/ulong.  So later when I twiddle 
the state valgrind triggers on the uninitialised access. So I was 
wondering whether gsl_rng_alloc() really ought to calloc the 
state instead of mallocing it.  Thoughts?

As a workaround I'm currently clearing the entire state right 
after calling gsl_rng_alloc() and then calling gsl_rng_set(rng, 
gsl_rng_default_seed) right after.  This does quell valgrind, but 
is it a sane thing to do?

Cheers,

Joonas



More information about the Gsl-discuss mailing list