This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH Fix incorrect double-checked locking related to _res_hconf.initialized. [BZ #20477]
On Thu, 2016-08-18 at 10:05 +0200, Florian Weimer wrote:
> On 08/18/2016 09:05 AM, Andreas Schwab wrote:
> > On Aug 17 2016, Florian Weimer <fweimer@redhat.com> wrote:
> >
> >> On 08/17/2016 04:51 PM, Andreas Schwab wrote:
> >>> On Aug 17 2016, Torvald Riegel <triegel@redhat.com> wrote:
> >>>
> >>>> diff --git a/resolv/res_hconf.h b/resolv/res_hconf.h
> >>>> index b97734d..a3d23f3 100644
> >>>> --- a/resolv/res_hconf.h
> >>>> +++ b/resolv/res_hconf.h
> >>>> @@ -25,6 +25,15 @@
> >>>>
> >>>> struct hconf
> >>>> {
> >>>> + /* We keep the INITIALIZED member only for backwards compatibility. New
> >>>> + code should just call _res_hconf_init unconditionally. For this field
> >>>> + to be used safely, users must ensure that either (1) a call to
> >>>> + _res_hconf_init happens-before any load from INITIALIZED, or (2) an
> >>> ^
> >>>> + assignment of zero to INITIALIZED happens-before any load from it, and
> >>> ^
> >>>
> >>> Those hyphens look wrong.
> >>
> >> “happens-before” is third-person singular of the verb
> >> “happen-before”. It's a technical term widely used while discussing memory
> >> models.
> >
> > But writing it without hyphen is standard English and doesn't require
> > special knowledge.
>
> But making sense of this comment requires special knowledge, and writing
> the verb as “happens-before” makes it clear that the memory relation is
> meant, and not some foggy concept of ordering. It's like
> MAY/SHOULD/RECOMMEND in IETF RFCs in this regard.
Yes. As Florian says, this is meant to refer to the happens-before
relation in the C11 memory model, and not some other notion of ordering.
The formalization of the C11 memory model uses "happens-before", so it
seemed like a good choice.
Nonetheless, I'm open to other ways of referring to it, as long as it's
precise and clearly refers to the memory model; in the end, the glibc
community needs to be happy with how we talk about concurrency. If
anyone has suggestions, let me know.