[PATCH] [BZ #19329] Fix race during concurrent dlopen and pthread_create

Szabolcs Nagy nsz@port70.net
Tue Dec 29 20:53:00 GMT 2015


* Florian Weimer <fweimer@redhat.com> [2015-12-29 19:48:57 +0100]:
> On 12/29/2015 11:38 AM, Ilya Palachev wrote:
> > +  listp->slotinfo[idx].gen = atomic_increment_val(&GL(dl_tls_generation));
> 
> Space after atomic_increment_val.  And I think it's a legacy macro, not
> one of the new C11 macros.  It's surprising that atomic access is not
> needed in any other places.  Why is this so?
> 

using atomic read during pthread_create is missing from the patch
as well as the use of atomics for slotinfo[idx] members.

a correct fix is non-trivial and will add several atomic memory ops.

> Does the counter now need overflow protection on 32-bit architectures
> because it is incremented more often?

it already had overflow protection, the patch broke that though



More information about the Libc-alpha mailing list