GNU bug report logs - #7359
sleep 9999999999

Previous Next

Package: coreutils;

Reported by: Matthew Bachmann <matt <at> itasoftware.com>

Date: Tue, 9 Nov 2010 19:35:02 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


Message #31 received at 7359 <at> debbugs.gnu.org (full text, mbox):

From: Eric Blake <eblake <at> redhat.com>
To: Pádraig Brady <P <at> draigBrady.com>
Cc: 7359 <at> debbugs.gnu.org
Subject: Re: bug#7359: sleep 9999999999
Date: Thu, 11 Nov 2010 08:12:32 -0700
[Message part 1 (text/plain, inline)]
On 11/11/2010 01:13 AM, Pádraig Brady wrote:
> On 11/11/10 07:21, Michal Svoboda wrote:
>> Pádraig Brady wrote:
>>>> matt <at> ita1bbx40,d1r17733u07 | strace -e nanosleep sleep 9999999999
>>>> nanosleep({9999999999, 0}, NULL)        = 0
>>
>> Just out of curiosity, what's wrong with nanosleep({9999999999, 0} ?
>>
>> The first argument should be time_t, which should not be prone to
>> something stupid like overflowing at 2 (or 4) billion or so.
> 
> Nothing is wrong with it, except that it trips
> up that old 64 bit linux kernel.

To be more precise - that kernel has a bug with nanosleep(-1,NULL).  So
we replace it with a working nanosleep.  However, Windows machines have
a bug with nanosleep(60*60*24*50,NULL), so we replace nanosleep on that
platform as well.  It's easier to have a single nanosleep replacement
for both platforms; therefore, our nanosleep replacement repeatedly
rolls over every 49 days, due to the worst case system we are replacing,
even if the Linux replacement could go the full 9999999999 seconds
without overflow.

-- 
Eric Blake   eblake <at> redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

[signature.asc (application/pgp-signature, attachment)]

This bug report was last modified 14 years and 281 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.