Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 14 Aug 2014 22:47:24 +0200
From: Jens Gustedt <jens.gustedt@...ia.fr>
To: musl@...ts.openwall.com
Subject: Re: My current understanding of cond var access restrictions

Am Donnerstag, den 14.08.2014, 14:23 -0400 schrieb Rich Felker:
> On Thu, Aug 14, 2014 at 08:12:46PM +0200, Jens Gustedt wrote:
> > I don't think they are too bad, actually. They help to distinguish two
> > phases for a waiting thread. In the first, he has released the mutex
> > and no signal or broadcast has been issued. A thread should never
> > attempt to relock the mutex and/or return to user space during that
> > phase.
> > 
> > And then the second phase after such a signal or broadcast, where any
> > wakeup could be legitimate and in the worst case just be spurious.
> 
> Yes. Really the only reason I dislike sequence numbers is the
> theoretical possibility of wrapping after 2<<32 signals. This would
> require extreme scheduling delays to realize without a signal handler
> intentionally preventing the waiter from making forward progress, so
> it's unlikely to impact anything, but it still seems wrong.

Wrapping alone doesn't matter, waiters don't have just to do an
equality test on the sequence counter. So with the traditional int
(and supposing that there is no UB because of the overflow) even
negative values may occur with no harm. The thing that would do harm
would be the waiter that is woken up *exactly* 2<<32 sequence points
later and concludes that the world hasn't changed. Really hard to
generate a test program for that bug :)

But why not give it a 64 bit integer then? It seems to me that
__u.i[9] is unused, so with a shift of the whole crowd _c_seq could
get two slots.

Ah, and for the records for the discussion on mutex we had before,
pthread_mutex_t also seems to have an empty slot, namely __u.__i[3],
no? Or was it intended that _c_count be in that, and using __u.i[5]
for it is a typo?

Jens

-- 
:: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS :::
:: ::::::::::::::: office Strasbourg : +33 368854536   ::
:: :::::::::::::::::::::: gsm France : +33 651400183   ::
:: ::::::::::::::: gsm international : +49 15737185122 ::
:: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::



Download attachment "signature.asc" of type "application/pgp-signature" (199 bytes)

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.