|
|
Message-Id: <20130404174850.58b2f8f1.idunham@lavabit.com>
Date: Thu, 4 Apr 2013 17:48:50 -0700
From: Isaac Dunham <idunham@...abit.com>
To: musl@...ts.openwall.com
Subject: Re: Pending issues for next release
On Thu, 4 Apr 2013 19:37:42 -0400
Rich Felker <dalias@...ifal.cx> wrote:
> > random_r (used by mesa?)
>
> Bleh, the API is pretty ugly. Thoughts on what we should do? Do they
> actually care about having a thread-local PRNG state, or are they only
> using it on the misguided idea that random might not be thread-safe?
The only place it happens is in src/glx/glxhash.c, which says this:
#ifndef __GLIBC__
#define HASH_RANDOM_DECL char *ps, rs[256]
#define HASH_RANDOM_INIT(seed) ps = initstate(seed, rs, sizeof(rs))
#define HASH_RANDOM random()
#define HASH_RANDOM_DESTROY setstate(ps)
#else
#define HASH_RANDOM_DECL struct random_data rd; int32_t rv; char rs[256]
#define HASH_RANDOM_INIT(seed) \
do { \
(void) memset(&rd, 0, sizeof(rd)); \
(void) initstate_r(seed, rs, sizeof(rs), &rd); \
} while(0)
#define HASH_RANDOM ((void) random_r(&rd, &rv), rv)
#define HASH_RANDOM_DESTROY
#endif
So mesa won't need it unless built for glibc.
This is the commit that made random_r conditional:
commit d09941c8cc2d4620eb774744c8878921b9dc3bcc
Author: Robert Noland <rnoland@...p.net>
Date: Tue Sep 22 11:49:57 2009 -0700
And the previous commit that made it an issue:
commit 9666529b5a5be1fcde82caadc2fe2efa5ea81e49
Author: Ian Romanick <ian.d.romanick@...el.com>
Date: Wed Sep 16 16:43:50 2009 -0700
glx: Use initstate_r / random_r instead of corrupting global random number state
Previously srandom and random were used. This cause the global random
number generator state to be modified. This caused problems for
applications that called srandom before calling into GLX. By using
local state the global state is left unmodified.
This should fix bug #23774.
So that's the rationale: nothing to do with threads, just leave global state alone.
--
Isaac Dunham <idunham@...abit.com>
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.