Subject: bug#23537: closed (Re: bug#23537: timeout test gets false-positive for duration of -1.189731495357231765e+4932)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 15 May 2016 15:53:02 +0000

Your bug report

#23537: timeout test gets false-positive for duration of -1.189731495357231765e+4932

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
23537: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23537
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#23537: timeout test gets false-positive for duration of -1.189731495357231765e+4932
From: Jim Meyering <[email-masked]>
To: Pádraig Brady <[email-masked]>
Cc: [email-masked]
Date: Sun, 15 May 2016 08:51:58 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

tags 23537 notabug
stop

On Sun, May 15, 2016 at 8:06 AM, Jim Meyering <[email-masked]> wrote:
> On Sun, May 15, 2016 at 4:21 AM, Pádraig Brady <[email-masked]> wrote:
>> Has up to date centos6 the bug?
>> I didn't see it with glibc-2.12-1.166.el6_7.7.x86_64
>
> Yes. I am surprised that you don't see it and I do:
>
>   $ rpm -q glibc
>   glibc-2.12-1.166.el6_7.7.x86_64
>   $ src/timeout 0.1 sleep 1.189731495357231765e+4932; echo $?
>   0

Pádraig guessed (correctly) that I'd updated coreutils' gnulib to
include a temporarily buggy xstrdod
(811b09243ca01827469827bf0973728a8619d249), but not yet past the fix
from a day or so later.
So this was all a false alert.

Subject: timeout test gets false-positive for duration of -1.189731495357231765e+4932
From: Jim Meyering <[email-masked]>
To: [email-masked]
Date: Sat, 14 May 2016 10:09:19 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

On systems with recent glibc, this abuse of timeout elicits the expected error:

  $ src/timeout -- -1.189731495357231765e+4932 sleep 0
  src/timeout: invalid time interval ‘-1.189731495357231765e+4932’
  Try 'src/timeout --help' for more information.

But with glibc-2.12's strtod, that input maps to a double-precision
value of 0 rather than to -inf, so timeout does this:

  $ src/timeout -- -1.189731495357231765e+4932 sleep 0; echo $?
  0

Similarly, the sleep.sh test fails because even without the leading "-",
that number ($LDBL_MAX) maps to 0:

  $ src/timeout 0.1 sleep 1.189731495357231765e+4932; echo $?
  0

which causes two tests to fail:

  tests/misc/timeout-parameters
  tests/misc/sleep

I see a couple of ways to avoid trouble.
Perhaps the most general is to make gnulib's strtod module detect and
compensate for these errors.
But that's CentOS6-era glibc, so maybe not worth it for such a corner case.