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)