5.1-RELEASE TODO
John Baldwin
jhb at FreeBSD.org
Tue May 20 14:02:29 PDT 2003
On 19-May-2003 Robert Watson wrote:
>
> On Mon, 19 May 2003, Terry Lambert wrote:
>
>> Robert Watson wrote:
>> > |-------------------+-------------+---------------+----------------------|
>> > | | | | Update the run-time |
>> > | rtld-elf | -- | Alexander | link editor (rtld) |
>> > | thread-safety | | Kabaev | thread-safe with |
>> > | | | | libpthread. |
>> > |-------------------+-------------+---------------+----------------------|
>>
>> According to chapter 12 of the "Go Solo 2" book, this is a bogus thing
>> to do. Callers are required to take a critical section over the calls
>> to the dl* functions because the dlerror() function uses a static buffer
>> that can be overwritten in a multi-threaded environment.
>
> Sadly, that insight doesn't seem to have influenced the development
> practices of a number of major application vendors :-(.
As Peter has mentioned before, simply locking calls to dlopen() in the
application is not sufficient since every time you have to resolve a
symbol when doing a call to a function for the first time, you hit the
same data structures and need the locks in those cases as well. Assuming
I recalled all that correctly.
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the freebsd-current
mailing list