Email List: Xaustin-group-lX
[All Lists]

Re: thread safe dlerror()

To: austin-group-l@xxxxxxxxxxxxx
Subject: Re: thread safe dlerror()
From: David-Sarah Hopwood <david.hopwood@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 26 Feb 2009 17:06:39 +0000
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=gVj5/ZaHabSVWIcb0uonLcNHi/YY9F4MET0T3FSF+fU=; b=QpqjWBUq2j51WZac+K4FNDqzDv0cJuydqw2H872kLMdx9eKGlhRR5LUNrXxy5DImBy AM5XTIHMpjMcplmdXzldqg7YjK4jtW2hYurpMDdGRTms+8Gyxkga3l2oVkCOeF2ShPzQ l9utMgqo464O2SZV6VLqxGwJorQKG5haWeAbA=
Domainkey-signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; b=LDM91kAE7+4J9aVwD+/5Pn4pzcJO/uiu+qGL231Mhhz+LkmSBvcQauFOyLUFLla0/5 GG9Z/XwxxfTre4KRNnK7leOpVk94eORTK3iGbOY9Z/qoGZ0RdJbh5871tAAPJAEdROq7 iZdCrK4EiEZ+eOaf17aOSfRn14xiTr1FVOITU=
References: <49A56277.6060209@pogma.com> <1235600065.24659.151.camel@amstaff2.msbit.com> <20090226105909.GA2912@squonk.masqnet>
Geoff Clare wrote:
> Nick Stoughton <nick@usenix.org> wrote, on 25 Feb 2009:
>> In this case, the aardvark was addressed during the face-to-face
>> meeting, Feb 27 - Mar 1, 2007, at IBM, Austin, Texas.
> [snip] 
>> The attendees at the meeting were: Andrew Josey, Nick Stoughton, Don
>> Cragun, Larry Dwyer, Mark Brown, Ulrich Drepper, David Clissold, Geoff
>> Clare, and Cathy Fox. If any of us have better notes on why we rejected
>> this aardvark, now would be a good time to share them!
> 
> I found my notes, but they don't shed any more light.
> 
> I don't recall clearly, but I think the point of the rejection is
> that, since dlerror() is not required to be thread-safe, if a
> multi-threaded application calls dlerror() the behaviour is
> undefined. Therefore implementations where dlerror() is
> thread-specific are already allowed (because that is one of the many
> behaviours allowed for "undefined behaviour").

No, that's clearly wrong. For example, suppose only threads A and B
call dl* functions, and:

 - thread A calls dlopen
 - thread A synchronizes with thread B, e.g. using a semaphore
 - thread B calls dlerror

The current wording requires thread B's call to dlerror to return the
error set by thread A's call to dlopen. So a thread-specific dlerror
is not conforming.

-- 
David-Sarah Hopwood ⚥

<Prev in Thread] Current Thread [Next in Thread>