Erroneous behavior

Sebastien DECUGIS Sebastien.Decugis at Ext.Bull.Net
Thu May 27 14:23:39 UTC 2004


Hi,

I've run into an issue with pthread_cond_timedwait() and
clock_settime().

The basics of my attached test is:

clock_gettime() -> time in ts
create a thread
[thread] pthread_cond_timedwait() with timeout = ts + 20sec
[main]clock_settime() with new ts > timeout

In this situation, the POSIX IEEE 1003.1 (2004) standard states that the
behavior of the thread should be as if the time had runned out (please
refer to the clock_settime() reference, §4). But when I run my test with
a fresh nptl (cvs from monday), I have to wait for the timeout as if the
clock had not been changed. Please note that even if I signal the
condition, I get the ETIMEDOUT error code return (which is normal).

I think this is due to the absolute timeout parameter being tranformed
into a relative timeout in the pthread_cond_timedwait routine. Is this
operation unavoidable?

Maybe a workaround would be to wake every threads waiting (in
pthread_cond_timedwait) on a given clock when this clock is set forward.
At worst, it results in a legal spurious wakeup, if the time out is not
expired. Please let me know if this is a kernel issue?

Thank you,
Sebastien.

-- 
Sébastien DECUGIS
Bull S.A.
NPTL Tests & Trace project
http://nptl.bullopensource.org/phpBB/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.tar.gz
Type: application/x-compressed-tar
Size: 9363 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/phil-list/attachments/20040527/c78a2c14/attachment.bin>


More information about the Phil-list mailing list