On Tue, Aug 08, 2006 at 06:14:17PM +0200, Mohammed Adnène Trojette <[EMAIL PROTECTED]> was heard to say: > On Tue, Aug 08, 2006, Julien Danjou wrote: > > > (3) If it's reproducible, can you trace through the code and see where > > > it fails? In particular, what value is being returned from > > > pthread_cond_timedwait? > > > > I can, but I'd need a little help, I'm not a C++ guru. > > It is reproducible on Julien's Xen machine, with this debug output:
Ick, I didn't realize this was a virtual machine. > | ...................... > | rval == -1080447064 > | > | now2.tv_sec == 1155053066 > | now.tv_sec + 2 == 1155053066 > | now2.tv_usec == 882203 > | now.tv_usec == 887661 > | F............. Hm. I'm inclined to close this as a bug in xen -- pthread_cond_timedwait should never ever return success if it hasn't waited long enough, which is what appears to be happening. [0] Does xen play games with the system clock? Daniel [0] Specifically, the only allowed error codes are ETIMEDOUT (indicating that we ran out of time) and EINTR; aptitude continues waiting until it receives something other than EINTR and assumes that if it didn't get EINTR, the wait succeeded. (now that I look at it again, this could be more defensively coded, but it should be correct anyway)