On Sun, Jul 31, 2011 at 10:26:11AM +0200, David Kastrup wrote: > Modern operating systems don't give your code any leftovers from a > previous run. That would be a security violation.
I'm certain that I've seen an uninitialized variable being 123456789 in some cases, and 0 in others. I sincerly doubt that modern operating systems remember what collection of bits were in memory at just before the first initialization, so the security step would surely be simply writing 0s to that location in memory. I think it's quite reasonable that if C++ interpreted a random collection of bits (i.e. uninitailized memory), guile would barf when trying to do some math with the resulting value. But since that pile of bits would be set to 0 on program exit, and if the initial programmer just assumed that uninitialized variables were 0 (as they are in java), that would very neatly explain why we've never seen two successive runs of this problem. > And even user stack initialization below the stack pointer is not > stochastical. Hmm, I may be misunderstanding this sentence due to my relative ignorance of low-level OS stuff (I had a quite varied career as an undergraduate). If you mean "the computer starts reserving pieces of memory for variables in different places in memory on each run", then my 0-theorizing above is false. But I'm pretty certain that I've seen student programs (running in 3-year-old cygwin on windows 2000, so perhaps not the most secure of environments) share unitialized variable locations across program runs. Cheers, - Graham _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel