Erroneous behavior

Sebastien DECUGIS <[email protected]> Thu, 27 May 2004 16:23:39 +0200
Newsgroups gmane.comp.lib.phil
Organization Bull S.A.
Message-ID <[email protected]>
--=-KdbXRDfItqtfagPFdSkX
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

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 =3D 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, =A74). 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.

--=20
S=E9bastien DECUGIS
Bull S.A.
NPTL Tests & Trace project
http://nptl.bullopensource.org/phpBB/

--=-KdbXRDfItqtfagPFdSkX
Content-Disposition: attachment; filename=test.tar.gz
Content-Type: application/x-compressed-tar; name=test.tar.gz
Content-Transfer-Encoding: base64

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
js/x+fHzH0t7HU8AeAAA

--=-KdbXRDfItqtfagPFdSkX
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline