[email protected] (Martin Husemann) writes:

>Trying to trace down lots of failures of mips N32 userland running on a N64
>kernel, I found that many calls to pthread_getspecific() happen without
>any prior pthread_setspecific().

That's perfectly valid. pthread_getspecific is supposed to return NULL
until the specific data for the key has been set by a call to
pthread_setspecific.


>       if (__predict_false(__uselibcstub))
>               return __libc_thr_getspecific_stub(key);
> 
>+      if (!pthread__self()->pt_havespecific)
>+              return NULL;
>+
>       return pthread__self()->pt_specific[key].pts_value;

>Should I commit the second, or is someone fixing the underlying issue
>and we'll commit the first?

If the issue is that pts_value is not initialized to NULL, then this
won't help. pt_havespecific is set when the first key is set, other
keys might then still be undefined.

But why is this a problem only for mips N32 ?

-- 
-- 
                                Michael van Elst
Internet: [email protected]
                                "A potential Snark may lurk in every tree."

Reply via email to