svn commit: r232209 - in head: lib/libthr/thread sys/kern

David Xu listlog2011 at gmail.com
Mon Mar 19 08:17:02 UTC 2012


On 2012/3/19 15:33, Pawel Jakub Dawidek wrote:
> On Sun, Mar 18, 2012 at 05:56:02PM -0700, Julian Elischer wrote:
>> On 3/18/12 11:50 AM, Pawel Jakub Dawidek wrote:
>>> On Mon, Feb 27, 2012 at 01:38:52PM +0000, David Xu wrote:
>>>> Author: davidxu
>>>> Date: Mon Feb 27 13:38:52 2012
>>>> New Revision: 232209
>>>> URL: http://svn.freebsd.org/changeset/base/232209
>>>>
>>>> Log:
>>>>     Follow changes made in revision 232144, pass absolute timeout to kernel,
>>>>     this eliminates a clock_gettime() syscall.
>>> This or some other change has broken CLOCK_MONOTONIC usage with
>>> condition variables.
>>>
>>> You should be able to reproduce this by something like this:
>>>
>>> 	pthread_cond_t cv;
>>> 	pthread_condattr_t attr;
>>> 	pthread_mutex_t lock;
>>> 	struct timespec ts;
>>>           int error;
>>>
>>> 	(void)pthread_mutex_init(&lock, NULL);
>>>
>>> 	(void)pthread_condattr_init(&attr);
>>> 	(void)pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
>>>
>>> 	(void)pthread_cond_init(&cv,&attr);
>>> 	(void)pthread_condattr_destroy(&attr);
>>>
>>> 	(void)clock_gettime(CLOCK_MONOTONIC,&ts);
>>> 	ts.tv_sec += 10;
>>> 	(void)pthread_mutex_lock(&lock);
>>> 	(void)pthread_cond_timedwait(&cv,&lock,&ts);
>>> 	(void)pthread_mutex_unlock(&lock);
>>>
>>> This should timeout after 10 seconds, but pthread_cond_timedwait(3)
>>> returns immediately with ETIMEDOUT. CLOCK_REALTIME works properly.
>>> Bascially pthread_condattr_setclock(&attr, CLOCK_MONOTONIC) is no-op.
>>> If you change CLOCK_MONOTONIC to CLOCK_REALTIME in clock_gettime(2)
>>> call, it will timeout after 10 seconds.
>> this has been broken for  a while for  me in fact fixing this was, I
>> thought,
>> one of the reasons for this work..  glad I'm not the omnly person
>> seeing it though.
>>
>> for me it broke sysutils/fio  from ports
> For me it breaks sbin/hastd and openbsm/auditdistd, but my feeling is
> that it is was broken recently. This stuff use to work not so long ago.
Hi,

Revision 233134 should have fixed the problem.

http://svn.freebsd.org/changeset/base/233134




More information about the svn-src-head mailing list