Hi,

On 8/28/12 1:41 PM, Ulrich Drepper wrote:
On Tue, Aug 28, 2012 at 4:44 AM, Paolo Carlini<paolo.carl...@oracle.com>  wrote:
Again, without context, I think this is not the point: random_device is meant 
to be just a simple high level wrapper
around things like dev/random, inspired by facilities like dev/random on unix-like OSes. 
The brutal "fall back" we have
now in place wouldn't be useful anyway for the uses Marc is talking about, 
because there is no way to provide a seed.
That said, I can't check right now C++11 about random_device, I suppose Uli has 
already ;)
I did read it.  random_device is all about non-determinism.  Of course
I know that RNGs in some situations have to be repeatable.  That's
what all the engines are about.  random_device isn't.  You use
random_device to seed an engine etc.

The spec says that if there is no way to create non-deterministic data
the implementation may use a random number engine.  "may" being to
key.
Ok.
I perhaps didn't make myself clear as to what the big problem is.
Depending on whether or not you define _GLIBCXX_USE_RANDOM_TR1 you get
an object definition for 'random"device" which has the same name and
mangling but has a different size.  This means binary
incompatibilities.  Memory corruptions.
But note that _GLIBCXX_USE_RANDOM_TR1, as *any* other such macro isn't supposed to be set by the user, definitely it's not. It's a configure-time macro. Thus, given your clarification above about "may", I think the issue here is whether normally people would like to see an abort, or the output of a fixed (no seed, that is, as we clarified already) deterministic engine as a fall back. In my opinion, having clarified the macro uses issue, the less bad solution is the deterministic engine. As a general maintainer of the library (that is not as a GNU/Linux maintainer) I would be more favorable to the abort if we had decently covered not just Unix-like systems but a few other systems, at least a bit of M$, etc.

Thus, all in all, I propose to just go ahead with your patch more or less, as-is, that is retain the MT fall back. Minor nit: are you sure we need to open a new minor version for the new symbol? Because it seemed to me that 4.7.x was behind by one. Please check. Also, again minor detail, we normally just use mangled names in the linker script, see all the examples the lines before, I don't think we should just now change that?!?

Paolo.

Reply via email to