Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Feb 2012 13:41:05 -0800
From:      Julian Elischer <julian@freebsd.org>
To:        threads@freebsd.org, FreeBSD Stable <freebsd-stable@freebsd.org>
Cc:        Jens Axboe <jaxboe@fusionio.com>
Subject:   pthread_cond_timedwait() broken in 9-stable? (from JAN 10)
Message-ID:  <4F3C2671.3090808@freebsd.org>

next in thread | raw e-mail | index | archive | help
The program fio (an IO test in ports) uses pthreads

the following code (from fio-2.0.3, but its in earlier code too)
has suddenly started misbehaving.

         clock_gettime(CLOCK_REALTIME, &t);
         t.tv_sec += seconds + 10;

         pthread_mutex_lock(&mutex->lock);

         while (!mutex->value && !ret) {
                 mutex->waiters++;
                 ret = pthread_cond_timedwait(&mutex->cond, 
&mutex->lock, &t);
                 mutex->waiters--;
         }

         if (!ret) {
                 mutex->value--;
                 pthread_mutex_unlock(&mutex->lock);
         }


It turns out that 'ret' sometimes comes back instantly (on my machine) 
with a value of 60 (ETIMEDOUT)
despite the fact that we set the timeout 10 seconds into the future.

Has anyone else seen anything like this?
(and yes the condition variable attribute have been set to use the 
REALTIME clock).





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F3C2671.3090808>