Showstopper for 2.1.3

Kaz Kylheku kaz@ashi.footprints.net
Sun Feb 13 16:23:00 GMT 2000


On 13 Feb 2000, Ulrich Drepper wrote:

> Date: 13 Feb 2000 00:08:46 -0800
> From: Ulrich Drepper <drepper@redhat.com>
> Reply-To: Ulrich Drepper <drepper@cygnus.com>
> To: libc-alpha Mailinglist <libc-alpha@sourceware.cygnus.com>
> Cc: khendricks@ivey.uwo.ca
> Subject: Re: Showstopper for 2.1.3
> 
> Andreas Jaeger <aj@suse.de> writes:
> 
> > we received the appended bug report.  We should fix this before we
> > release 2.1.3.
> 
> I undid the last change leaving the new code in the file.

I foresaw that the tight loop might not completely eliminate the ``time
dilation'' problem when the condition sleep receives many signal
interrupts, and have a ready solution for that.

One simple way to address the is to change the loop from:

    while (__libc_nanosleep(&reltime, &reltime) == -1)
	; /* nothing */

to one which always recalculates the remaining sleep time:

    while (__libc_nanosleep(&reltime, NULL)) {
	/* call gettimeofday */
	/* compute new sleep reltime */
    }

This should eliminate the time dilation, while keeping the loop small.  I was
hoping that this wouldn't be necessary.

I'm ashamed to admit that I didn't test the code well enough for the time
dilation problem; that is to say, I didn't send it enough signals per second to
see a difference.

Anyway, I'll get right on it; it shouldn't take long.



More information about the Libc-alpha mailing list