[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#4662) ldap_create needs lock?
hyc@symas.com wrote:
> volz@cisco.com wrote:
>
>> Full_Name: Bernie Volz
>> Version: All
>> OS: Linux
>> URL: ftp://ftp.openldap.org/incoming/
>> Submission from: (NULL) (64.102.254.33)
>>
>>
>> In ldap_create, if multiple threads are calling ldap_init (or one of the other
>> initialization functions), they may compete to initialize the global options and
>> this results in a segmentation fault.
>>
>
>
>> Shouldn't the above code be conditionalized on LDAP_R_COMPILE and use a static
>> global mutex to assure that only one thread is testing and potentially
>> initializing the global options.
>>
>
> Unfortunately static mutex initializers are non-portable. I guess for
> gcc we could arrange to have a constructor do the initialization, but
> it's not clear what we can do for the more general case.
>
As far as I can tell, calling pthread_once() would be the "right" thing
to do. I have no clue
whether it's as portable as we need, though.
p.
Ing. Pierangelo Masarati
OpenLDAP Core Team
SysNet s.n.c.
Via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
------------------------------------------
Office: +39.02.23998309
Mobile: +39.333.4963172
Email: pierangelo.masarati@sys-net.it
------------------------------------------