GNU bug report logs - #77535
timeout treats very short durations as `0`

Previous Next

Package: coreutils;

Reported by: Nicolas Boichat <nicolas <at> boichat.ch>

Date: Fri, 4 Apr 2025 16:13:02 UTC

Severity: normal

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

Bug is archived. No further changes may be made.

Full log


Message #13 received at 77535-done <at> debbugs.gnu.org (full text, mbox):

From: Nicolas Boichat <nicolas <at> boichat.ch>
To: Pádraig Brady <P <at> draigbrady.com>
Cc: 77535-done <at> debbugs.gnu.org
Subject: Re: bug#77535: timeout treats very short durations as `0`
Date: Fri, 4 Apr 2025 21:53:53 +0200
On Fri, 4 Apr 2025 at 21:27, Pádraig Brady <P <at> draigbrady.com> wrote:
>
> On 04/04/2025 16:26, Nicolas Boichat wrote:
> > Hi,
> >
> > Version: timeout (GNU coreutils) 9.6, Archlinux, x86-64.
> >
> > While playing with different duration parameters to `timeout`, I
> > noticed that extremely short durations, like `1e-3000`, are rounded
> > down to `0`. The problem is that `0` has a special meaning (disabling
> > the timeout), so I don't think this is desired.
> >
> > All of these commands exit immediately:
> > ```
> > timeout 0.0001 cat
> > timeout 1e-100 cat
> > timeout 1e-300 cat
> > timeout 1e-323 cat
> > ```
> >
> > But these never exits:
> > ```
> > timeout 1e-324 cat
> > timeout 1e-3000 cat
> > ```
> >
> > As if we had typed:
> > ```
> > timeout 0 cat
> > ```
> >
> > I think there is some logic in `printf` to handle float parsing
> > underflow, so maybe this can be reused in `timeout` as well.
>
> The following should avoid this issue.
>
> Marking this as done.

That was fast! Thanks!

>
> thanks!
> Pádraig
>
> diff --git a/src/timeout.c b/src/timeout.c
> index 578d71070..6756cd888 100644
> --- a/src/timeout.c
> +++ b/src/timeout.c
> @@ -371,6 +371,10 @@ parse_duration (char const *str)
>         usage (EXIT_CANCELED);
>       }
>
> +  /* Clamp underflow to 1ns, as 0 disables the timeout.  */
> +  if (duration == 0 && errno == ERANGE)
> +    duration = 1e-9;
> +
>     return duration;
>   }
>




This bug report was last modified 42 days ago.

Previous Next


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