[PATCH][BZ #19329] Fix race between tls allocation at thread creation and dlopen

Szabolcs Nagy szabolcs.nagy@arm.com
Mon Jan 11 16:42:00 GMT 2016


On 11/01/16 15:48, Ilya Palachev wrote:
> On 06.01.2016 21:33, Szabolcs Nagy wrote:
>>         /* Keep track of the maximum generation number.  This might
>>            not be the generation counter.  */
>> -      assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation));
>> -      maxgen = MAX (maxgen, listp->slotinfo[cnt].gen);
>> +      maxgen = MAX (maxgen, gen);
>
> Thanks for the patch.
>
> But it seems quite strange that the failed assertion is simply deleted from the code.
> Is it still failing for your patch?

yes

> How can you prove that it is working if the assertion that was failing is now just deleted from the code?

i can only prove that the assertion is wrong by
analysing the code: the condition it verifies
cannot be enforced with the current design.

removing it is harmless since the slotinfo entries
are lazy initialized.

> If I just remove the assertion and do nothing else, the error will go away.

that's not enough: the dtv of the thread will be
in an inconsistent state and tls access in the
thread may crash.

> Can you stay the assertion at its place or otherwise explain why do you want to remove it?
>
> --
> Best regards,
> Ilya Palachev
>



More information about the Libc-alpha mailing list