question about race:stream in glibc manual

Carlos O'Donell carlos@redhat.com
Wed Nov 19 02:23:00 GMT 2014


On 11/18/2014 06:52 PM, Alexandre Oliva wrote:
> On Nov 18, 2014, "Carlos O'Donell" <carlos@redhat.com> wrote:
> 
>> On 11/13/2014 07:24 PM, MaShimiao wrote:
> 
>>> According to the manual, I think if a function has an argument FILE
>>> *stream and the stream may cause data races inside the function, it
>>> should annotated with MT-Safe race:stream. Am I right?
> 
>> You are not correct. The FILE* is an opaque object.
> 
> We experimented with distinguishing opaque and non-opaque objects for
> some time, but in the end we decided not to make this distinction.  In
> the version we put in the manual, we state the user is responsible for
> synchronization WRT all objects chosen by the user, but we explicitly
> annotate functions with race:<parm> as a reminder, when opaqueness or
> custom might suggest the library would take care of it.
> 
> addmntent is indeed MT-Safe, although there's a potential for unintended
> behavior if the stream is repositioned between the seek and the write.

IMO that's a bug. The API contract for addmntent requires the structure
be written at the end of the open file fp. It should lock the stream,
seek to the end, write, and unlock.

> I said I wouldn't install the patch that fixes this if there were
> objections by Tuesday.  So now I'm gonna wait till I hear back from you
> before I check it in.  Please let me know.

I'm feeling very dense. What patch?

Cheers,
Carlos.
 



More information about the Libc-help mailing list