Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NetBSD: multiple test failures with '-Duselongdouble' #17134

Closed
p5pRT opened this issue Aug 19, 2019 · 19 comments
Closed

NetBSD: multiple test failures with '-Duselongdouble' #17134

p5pRT opened this issue Aug 19, 2019 · 19 comments
Assignees
Labels

Comments

@p5pRT
Copy link

p5pRT commented Aug 19, 2019

Migrated from rt.perl.org#134376 (status was 'open')

Searchable as RT134376$

@p5pRT
Copy link
Author

p5pRT commented Aug 19, 2019

From @jkeenan

If you never test for something, you'll never know where some failures
may lie. Once you start testing, you may be chagrined at all the
failures you encounter.

That's what we're learning as we test more varied configurations on more
platforms in our smoke testing runs.

When we build perl with '-Duselongdouble' on NetBSD, perl builds but we
get failures in five files in the test suite. See these smoke testing
reports submitted by Carlos Guevara for blead at commit 74cd64c (Aug
18 2019).

netbsd-7.2 g++-4.8.5 http​://perl5.test-smoke.org/report/93327
netbsd-7.2 gcc-4.8.5 http​://perl5.test-smoke.org/report/93353
netbsd-8.1 g++-5.5.0 http​://perl5.test-smoke.org/report/93352
netbsd-8.1 gcc-5.5.0 http​://perl5.test-smoke.org/report/93329

Test failures​:
~~ ../cpan/ExtUtils-MakeMaker/t/03-xsstatic.t .................. FAILED
5 Non-zero exit status​: 6
~~ ../cpan/ExtUtils-MakeMaker/t/basic.t ........................ FAILED
22-28 Non-zero exit status​: 7
~~ ../ext/POSIX/t/math.t ....................................... FAILED
Non-zero exit status​: 1 No plan found in TAP output
~~ ../t/op/sprintf2.t .......................................... FAILED 1459
~~ ../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t ................. FAILED
5 71 Non-zero exit status​: 12

AFAICT these are among the first smoke test runs done on NetBSD with
-Duselongdouble in the configuration. So there's no evidence (yet) that
this is a regression from a more idyllic state in the past.

Note that these failures do not include cpan/Scalar-List-Utils/t/uniq.t,
where the commit that generated a failure on multiple platforms has been
reverted. (https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134358)

Note that these failures also do not reflect the clang++ problems with
-Duselongdouble discussed in
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134371 and
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134375.  Neither clang nor
clang++ is being used in any of these NetBSD smoke test rigs.

If there's anyone with NetBSD experience (or even mere access) who can
take a look at these, that would be appreciated.

Thank you very much.
Jim Keenan

perl perl perl

@p5pRT
Copy link
Author

p5pRT commented Aug 24, 2019

From @jkeenan

On Mon, 19 Aug 2019 00​:17​:32 GMT, jkeenan@​pobox.com wrote​:

If you never test for something, you'll never know where some failures
may lie. Once you start testing, you may be chagrined at all the
failures you encounter.

That's what we're learning as we test more varied configurations on more
platforms in our smoke testing runs.

When we build perl with '-Duselongdouble' on NetBSD, perl builds but we
get failures in five files in the test suite. See these smoke testing
reports submitted by Carlos Guevara for blead at commit 74cd64c (Aug
18 2019).

netbsd-7.2 g++-4.8.5 http​://perl5.test-smoke.org/report/93327
netbsd-7.2 gcc-4.8.5 http​://perl5.test-smoke.org/report/93353
netbsd-8.1 g++-5.5.0 http​://perl5.test-smoke.org/report/93352
netbsd-8.1 gcc-5.5.0 http​://perl5.test-smoke.org/report/93329

Test failures​:
~~ ../cpan/ExtUtils-MakeMaker/t/03-xsstatic.t .................. FAILED
5 Non-zero exit status​: 6
~~ ../cpan/ExtUtils-MakeMaker/t/basic.t ........................ FAILED
22-28 Non-zero exit status​: 7
~~ ../ext/POSIX/t/math.t ....................................... FAILED
Non-zero exit status​: 1 No plan found in TAP output
~~ ../t/op/sprintf2.t .......................................... FAILED 1459
~~ ../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t ................. FAILED
5 71 Non-zero exit status​: 12

AFAICT these are among the first smoke test runs done on NetBSD with
-Duselongdouble in the configuration. So there's no evidence (yet) that
this is a regression from a more idyllic state in the past.

Note that these failures do not include cpan/Scalar-List-Utils/t/uniq.t,
where the commit that generated a failure on multiple platforms has been
reverted. (https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134358)

Note that these failures also do not reflect the clang++ problems with
-Duselongdouble discussed in
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134371 and
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134375.  Neither clang nor
clang++ is being used in any of these NetBSD smoke test rigs.

If there's anyone with NetBSD experience (or even mere access) who can
take a look at these, that would be appreciated.

Thank you very much.
Jim Keenan

perl perl perl

I have installed a NetBSD-8.0 VM and have built perl blead with -Duselongdouble. I am getting the same test failures Carlos is seeing in his smoke-test reports. See attachments.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Aug 24, 2019

@p5pRT
Copy link
Author

p5pRT commented Aug 24, 2019

From @jkeenan

../ext/POSIX/t/math.t ..
ok 1 - Basic acos(1) test
ok 2 - acos(-1)
ok 3 - acos(-1)
ok 4 - acos(0)
ok 5 - acos(0)
ok 6 - Basic asin(0) test
ok 7 - Basic asin(1) test
ok 8 - Basic asin(-1) test
ok 9 - asin(1) == -asin(-1)
ok 10 - Basic atan(0) test
ok 11 - atan(1)
ok 12 - atan(1)
ok 13 - atan(-1)
ok 14 - atan(-1)
ok 15 - atan(1) == -atan(-1)
ok 16 - Basic cosh(0) test
ok 17 - cosh(1)
ok 18 - cosh(1)
ok 19 - cosh(-1)
ok 20 - cosh(-1)
ok 21 - cosh(1) == cosh(-1)
ok 22 - Basic floor(1.23441242) test
ok 23 - Basic floor(-1.23441242) test
ok 24 - Basic fmod(3.5, 2.0) test
ok 25 - Basic frexp(1) test
ok 26 - Basic ldexp(0,1) test
ok 27 - Basic log10(1) test
ok 28 - Basic log10(10) test
ok 29 - Basic modf(1.76) test
ok 30 - Basic sinh(0) test
ok 31 - sinh(1)
ok 32 - sinh(1)
ok 33 - sinh(-1)
ok 34 - sinh(-1)
ok 35 - Basic tan(0) test
ok 36 - tan(1)
ok 37 - tan(1)
ok 38 - tan(-1)
ok 39 - tan(-1)
ok 40 - tan(1) == -tan(-1)
ok 41 - Basic tanh(0) test
ok 42 - tanh(1)
ok 43 - tanh(1)
ok 44 - tanh(-1)
ok 45 - tanh(-1)
ok 46 - tanh(1) == -tanh(-1)
ok 47 - fpclassify 1
ok 48 - fpclassify 0
ok 49 - fpclassify INFINITY
ok 50 - fpclassify NAN
ok 51 - M_SQRT2
ok 52 - M_E
ok 53 - M_PI
ok 54 - acosh
ok 55 - asinh
ok 56 - atanh
ok 57 - cbrt
ok 58 - cbrt
ok 59 - copysign
../../lib/auto/POSIX/POSIX.so​: Undefined PLT symbol "expm1l" (symnum = 171)
Dubious, test returned 1 (wstat 256, 0x100)
All 59 subtests passed

Test Summary Report


../ext/POSIX/t/math.t (Wstat​: 256 Tests​: 59 Failed​: 0)
  Non-zero exit status​: 1
  Parse errors​: No plan found in TAP output
Files=1, Tests=59, 1 wallclock secs ( 0.00 usr 0.01 sys + 0.09 cusr 0.01 csys = 0.11 CPU)
Result​: FAIL

@p5pRT
Copy link
Author

p5pRT commented Aug 24, 2019

From @jkeenan

# Failed test 1459 - '%a' '2.71828182845904509' -> '0xa.df85458a2bb48p-2' cf '0xa.df85458a2bb4a9bp-2' at op/sprintf2.t line 687
op/sprintf2.t ..
# uvsize = 8
# nvsize = 16
# nv_preserves_uv_bits = 64
# d_quad = define
# uselongdouble = define
ok 1 - the sprintf "%.<number>g" optimization
ok 2 - the sprintf "%.<number>f" optimization
ok 3 - width calculation under utf8 upgrade, length=1
ok 4 - width calculation under utf8 upgrade, length=5
ok 5 - width calculation under utf8 upgrade, length=10
ok 6 - width calculation under utf8 upgrade, length=20
ok 7 - width calculation under utf8 upgrade, length=50
ok 8 - width calculation under utf8 upgrade, length=100
ok 9 - width & precision interplay with utf8 strings, length=1
ok 10 - width & precision interplay with utf8 strings, length=3
...
ok 1441 - sprintf "%7.6s", "\x{20ac}\x{20ac}"
ok 1442 - sprintf "%7.7s", "\x{20ac}\x{20ac}"
ok 1443 - sprinf %1s overload count
ok 1444 - sprinf %.1s overload count
ok 1445 - sprintf %d string overload count is 0
ok 1446 - sprintf %d number overload count is 1
ok 1447 - '%a' '0' -> '0x0p+0' cf '0x0p+0'
ok 1448 - '%a' '1' -> '0x8p-3' cf '0x8p-3'
ok 1449 - '%a' '1' -> '0x8p-3' cf '0x8p-3'
ok 1450 - '%a' '0.5' -> '0x8p-4' cf '0x8p-4'
ok 1451 - '%a' '0.25' -> '0x8p-5' cf '0x8p-5'
ok 1452 - '%a' '0.75' -> '0xcp-4' cf '0xcp-4'
ok 1453 - '%a' '3.14' -> '0xc.8f5c28f5c28f5c3p-2' cf '0xc.8f5c28f5c28f5c3p-2'
ok 1454 - '%a' '-1' -> '-0x8p-3' cf '-0x8p-3'
ok 1455 - '%a' '-3.14' -> '-0xc.8f5c28f5c28f5c3p-2' cf '-0xc.8f5c28f5c28f5c3p-2'
ok 1456 - '%a' '0.1' -> '0xc.ccccccccccccccdp-7' cf '0xc.ccccccccccccccdp-7'
ok 1457 - '%a' '0.142857142857142857' -> '0x9.249249249249249p-6' cf '0x9.249249249249249p-6'
ok 1458 - '%a' '1.41421356237309505' -> '0xb.504f333f9de6484p-3' cf '0xb.504f333f9de6484p-3'
# rp = 0xa., ep = 0xa. (rh df85458a2bb48p-2, eh df85458a2bb4a9bp-2)
# re = p-2, ee = p-2 (rh df85458a2bb48, eh df85458a2bb4a9b)
# (rh 8, eh a9b)
# (rh 80, eh a9b)
not ok 1459 - '%a' '2.71828182845904509' -> '0xa.df85458a2bb48p-2' cf '0xa.df85458a2bb4a9bp-2'
ok 1460 - '%a' '0.0009765625' -> '0x8p-13' cf '0x8p-13'
ok 1461 - '%a' '1024' -> '0x8p+7' cf '0x8p+7'
ok 1462 - '%a' '1e-09' -> '0x8.9705f4136b4a597p-33' cf '0x8.9705f4136b4a597p-33'
ok 1463 - '%a' '1000000000' -> '0xe.e6b28p+26' cf '0xe.e6b28p+26'
ok 1464 - '%\#a' '1' -> '0x8.p-3' cf '0x8.p-3'
ok 1465 - '%+a' '1' -> '+0x8p-3' cf '+0x8p-3'
ok 1466 - '%+a' '-1' -> '-0x8p-3' cf '-0x8p-3'
ok 1467 - '% a' '1' -> ' 0x8p-3' cf ' 0x8p-3'
ok 1468 - '% a' '-1' -> '-0x8p-3' cf '-0x8p-3'
ok 1469 - '%+ a' '1' -> '+0x8p-3' cf '+0x8p-3'
ok 1470 - '%+ a' '-1' -> '-0x8p-3' cf '-0x8p-3'
ok 1471 - '% +a' '1' -> '+0x8p-3' cf '+0x8p-3'
ok 1472 - '% +a' '-1' -> '-0x8p-3' cf '-0x8p-3'
ok 1473 - '%8a' '3.14' -> '0xc.8f5c28f5c28f5c3p-2' cf '0xc.8f5c28f5c28f5c3p-2'
ok 1474 - '%13a' '3.14' -> '0xc.8f5c28f5c28f5c3p-2' cf '0xc.8f5c28f5c28f5c3p-2'
ok 1475 - '%20a' '3.14' -> '0xc.8f5c28f5c28f5c3p-2' cf '0xc.8f5c28f5c28f5c3p-2'
ok 1476 - '%.4a' '3.14' -> '0xc.8f5cp-2' cf '0xc.8f5cp-2'
...
ok 1688 - special-case %.0f on 0
ok 1689 - special-case %.0f on 0
ok 1690 - special-case %.0f on 4503599627370501
ok 1691 - special-case %.0f on -4503599627370501
ok 1692 - special-case %.0f on 4503599627370503
ok 1693 - special-case %.0f on -4503599627370503
ok 1694 - croak for very large numeric format results
1..1694
Failed 1/1694 subtests
  (less 98 skipped subtests​: 1595 okay)

Test Summary Report


op/sprintf2.t (Wstat​: 0 Tests​: 1694 Failed​: 1)
  Failed test​: 1459
Files=1, Tests=1694, 0 wallclock secs ( 0.08 usr 0.04 sys + 0.17 cusr 0.27 csys = 0.56 CPU)
Result​: FAIL

@p5pRT
Copy link
Author

p5pRT commented Aug 24, 2019

From @jkeenan

Summary of my perl5 (revision 5 version 31 subversion 4) configuration​:
  Commit id​: c6f37d6
  Platform​:
  osname=netbsd
  osvers=8.0
  archname=amd64-netbsd-ld
  uname='netbsd perl-reporter-08 8.0 netbsd 8.0 (generic) #0​: tue jul 17 14​:59​:51 utc 2018 mkrepro@​mkrepro.netbsd.org​:usrsrcsysarchamd64compilegeneric amd64 '
  config_args='-des -Dusedevel -Duselongdouble -Dcc=gcc'
  hint=recommended
  useposix=true
  d_sigaction=define
  useithreads=undef
  usemultiplicity=undef
  use64bitint=define
  use64bitall=define
  uselongdouble=define
  usemymalloc=n
  default_inc_excludes_dot=define
  bincompat5005=undef
  Compiler​:
  cc='gcc'
  ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/pkg/include -D_FORTIFY_SOURCE=2'
  optimize='-O'
  cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/pkg/include'
  ccversion=''
  gccversion='5.5.0'
  gccosandvers=''
  intsize=4
  longsize=8
  ptrsize=8
  doublesize=8
  byteorder=12345678
  doublekind=3
  d_longlong=define
  longlongsize=8
  d_longdbl=define
  longdblsize=16
  longdblkind=3
  ivtype='long'
  ivsize=8
  nvtype='long double'
  nvsize=16
  Off_t='off_t'
  lseeksize=8
  alignbytes=16
  prototype=define
  Linker and Libraries​:
  ld='gcc'
  ldflags =' -Wl,-rpath,/usr/pkg/lib -Wl,-rpath,/usr/local/lib -fstack-protector-strong -L/usr/pkg/lib'
  libpth=/usr/include/gcc-5 /usr/lib /usr/pkg/lib /lib
  libs=-lpthread -lm -lcrypt -lutil -lc -lposix
  perllibs=-lpthread -lm -lcrypt -lutil -lc -lposix
  libc=/lib/libc.so
  so=so
  useshrplib=false
  libperl=libperl.a
  gnulibc_version=''
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs
  dlext=so
  d_dlsymun=undef
  ccdlflags='-Wl,-E '
  cccdlflags='-DPIC -fPIC '
  lddlflags='-shared -L/usr/pkg/lib -fstack-protector-strong'

Characteristics of this binary (from libperl)​:
  Compile-time options​:
  HAS_TIMES
  PERLIO_LAYERS
  PERL_COPY_ON_WRITE
  PERL_DONT_CREATE_GVSV
  PERL_MALLOC_WRAP
  PERL_OP_PARENT
  PERL_PRESERVE_IVUV
  PERL_USE_DEVEL
  USE_64_BIT_ALL
  USE_64_BIT_INT
  USE_LARGE_FILES
  USE_LOCALE
  USE_LOCALE_COLLATE
  USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC
  USE_LOCALE_TIME
  USE_LONG_DOUBLE
  USE_PERLIO
  USE_PERL_ATOF
  Built under netbsd
  Compiled at Aug 24 2019 03​:43​:51
  %ENV​:
  PERL2DIR="/home/jkeenan/gitwork/perl2"
  PERL_WORKDIR="/home/jkeenan/gitwork/perl"
  @​INC​:
  lib
  /usr/lib/perl5/site_perl/5.31.4/amd64-netbsd-ld
  /usr/lib/perl5/site_perl/5.31.4
  /usr/lib/perl5/5.31.4/amd64-netbsd-ld
  /usr/lib/perl5/5.31.4

@p5pRT
Copy link
Author

p5pRT commented Aug 24, 2019

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Aug 24, 2019

From @jkeenan

On Sat, 24 Aug 2019 04​:19​:03 GMT, jkeenan wrote​:

On Mon, 19 Aug 2019 00​:17​:32 GMT, jkeenan@​pobox.com wrote​:

If you never test for something, you'll never know where some
failures
may lie. Once you start testing, you may be chagrined at all the
failures you encounter.

That's what we're learning as we test more varied configurations on
more
platforms in our smoke testing runs.

When we build perl with '-Duselongdouble' on NetBSD, perl builds but
we
get failures in five files in the test suite. See these smoke
testing
reports submitted by Carlos Guevara for blead at commit 74cd64c
(Aug
18 2019).

netbsd-7.2 g++-4.8.5 http​://perl5.test-smoke.org/report/93327
netbsd-7.2 gcc-4.8.5 http​://perl5.test-smoke.org/report/93353
netbsd-8.1 g++-5.5.0 http​://perl5.test-smoke.org/report/93352
netbsd-8.1 gcc-5.5.0 http​://perl5.test-smoke.org/report/93329

Test failures​:
~~ ../cpan/ExtUtils-MakeMaker/t/03-xsstatic.t ..................
FAILED
5 Non-zero exit status​: 6
~~ ../cpan/ExtUtils-MakeMaker/t/basic.t ........................
FAILED
22-28 Non-zero exit status​: 7
~~ ../ext/POSIX/t/math.t .......................................
FAILED
Non-zero exit status​: 1 No plan found in TAP output
~~ ../t/op/sprintf2.t ..........................................
FAILED 1459
~~ ../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t .................
FAILED
5 71 Non-zero exit status​: 12

AFAICT these are among the first smoke test runs done on NetBSD with
-Duselongdouble in the configuration. So there's no evidence (yet)
that
this is a regression from a more idyllic state in the past.

Note that these failures do not include cpan/Scalar-List-
Utils/t/uniq.t,
where the commit that generated a failure on multiple platforms has
been
reverted. (https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134358)

Note that these failures also do not reflect the clang++ problems
with
-Duselongdouble discussed in
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134371 and
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134375.  Neither clang nor
clang++ is being used in any of these NetBSD smoke test rigs.

If there's anyone with NetBSD experience (or even mere access) who
can
take a look at these, that would be appreciated.

Thank you very much.
Jim Keenan

perl perl perl

I have installed a NetBSD-8.0 VM and have built perl blead with
-Duselongdouble. I am getting the same test failures Carlos is seeing
in his smoke-test reports. See attachments.

The failures in the cpan/ExtUtils-MakeMaker tests all implicate TAP​::Formatter​::File and POSIX.PM​:

#####
25​:# Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm aborted.
26​:# Compilation failed in require at ../../../../lib/TAP/Formatter/File.pm line 6.
27​:# BEGIN failed--compilation aborted at ../../../../lib/TAP/Formatter/File.pm line 6.
#####

Along the same lines, I am unable to install cpanm on NetBSD with '-Duselongdouble'. I get​:

#####
Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm aborted.
#####

Now, when I test ext/POSIX/t/math.t with a longdouble build, I find that I get *multiple* crashes which are only revealed when I comment out crashing tests. Here are 3 groups of crashing tests and the crash message associated with each.

#####
.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "log1pl" (symnum = 183)
99 # near(expm1(2), 6.38905609893065, "expm1", 1e-9);
100 # near(expm1(1e-6), 1.00000050000017e-06, "expm1", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "log2l" (symnum = 151)
127 # near(log1p(2), 1.09861228866811, "log1p", 1e-9);
128 # near(log1p(1e-6), 9.99999500000333e-07, "log1p", 1e-9);
129 # near(log2(8), 3, "log2", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "tgammal" (symnum = 47)
173 # near(tgamma(5), 24, "tgamma 5", 1.5e-7);
174 # near(tgamma(5.5), 52.3427777845535, "tgamma 5.5", 1.5e-7);
175 # near(tgamma(9), 40320, "tgamma 9", 1.5e-7);
176 # near(lgamma(5), 3.17805383034795, "lgamma 4", 1.5e-7);
177 # near(lgamma(5.5), 3.95781396761872, "lgamma 5.5", 1.5e-7);
178 # near(lgamma(9), 10.6046029027452, "lgamma 9", 1.5e-7);
#####

Thank you very much.
--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Aug 25, 2019

From @craigberry

On Sat, Aug 24, 2019 at 10​:14 AM James E Keenan via RT
<perlbug-followup@​perl.org> wrote​:

On Sat, 24 Aug 2019 04​:19​:03 GMT, jkeenan wrote​:

On Mon, 19 Aug 2019 00​:17​:32 GMT, jkeenan@​pobox.com wrote​:

If you never test for something, you'll never know where some
failures
may lie. Once you start testing, you may be chagrined at all the
failures you encounter.

That's what we're learning as we test more varied configurations on
more
platforms in our smoke testing runs.

When we build perl with '-Duselongdouble' on NetBSD, perl builds but
we
get failures in five files in the test suite. See these smoke
testing
reports submitted by Carlos Guevara for blead at commit 74cd64c
(Aug
18 2019).

netbsd-7.2 g++-4.8.5 http​://perl5.test-smoke.org/report/93327
netbsd-7.2 gcc-4.8.5 http​://perl5.test-smoke.org/report/93353
netbsd-8.1 g++-5.5.0 http​://perl5.test-smoke.org/report/93352
netbsd-8.1 gcc-5.5.0 http​://perl5.test-smoke.org/report/93329

Test failures​:
~~ ../cpan/ExtUtils-MakeMaker/t/03-xsstatic.t ..................
FAILED
5 Non-zero exit status​: 6
~~ ../cpan/ExtUtils-MakeMaker/t/basic.t ........................
FAILED
22-28 Non-zero exit status​: 7
~~ ../ext/POSIX/t/math.t .......................................
FAILED
Non-zero exit status​: 1 No plan found in TAP output
~~ ../t/op/sprintf2.t ..........................................
FAILED 1459
~~ ../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t .................
FAILED
5 71 Non-zero exit status​: 12

AFAICT these are among the first smoke test runs done on NetBSD with
-Duselongdouble in the configuration. So there's no evidence (yet)
that
this is a regression from a more idyllic state in the past.

Note that these failures do not include cpan/Scalar-List-
Utils/t/uniq.t,
where the commit that generated a failure on multiple platforms has
been
reverted. (https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134358)

Note that these failures also do not reflect the clang++ problems
with
-Duselongdouble discussed in
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134371 and
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134375.  Neither clang nor
clang++ is being used in any of these NetBSD smoke test rigs.

If there's anyone with NetBSD experience (or even mere access) who
can
take a look at these, that would be appreciated.

Thank you very much.
Jim Keenan

perl perl perl

I have installed a NetBSD-8.0 VM and have built perl blead with
-Duselongdouble. I am getting the same test failures Carlos is seeing
in his smoke-test reports. See attachments.

The failures in the cpan/ExtUtils-MakeMaker tests all implicate TAP​::Formatter​::File and POSIX.PM​:

#####
25​:# Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm aborted.
26​:# Compilation failed in require at ../../../../lib/TAP/Formatter/File.pm line 6.
27​:# BEGIN failed--compilation aborted at ../../../../lib/TAP/Formatter/File.pm line 6.
#####

Along the same lines, I am unable to install cpanm on NetBSD with '-Duselongdouble'. I get​:

#####
Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm aborted.
#####

Now, when I test ext/POSIX/t/math.t with a longdouble build, I find that I get *multiple* crashes which are only revealed when I comment out crashing tests. Here are 3 groups of crashing tests and the crash message associated with each.

#####
.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "log1pl" (symnum = 183)
99 # near(expm1(2), 6.38905609893065, "expm1", 1e-9);
100 # near(expm1(1e-6), 1.00000050000017e-06, "expm1", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "log2l" (symnum = 151)
127 # near(log1p(2), 1.09861228866811, "log1p", 1e-9);
128 # near(log1p(1e-6), 9.99999500000333e-07, "log1p", 1e-9);
129 # near(log2(8), 3, "log2", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "tgammal" (symnum = 47)
173 # near(tgamma(5), 24, "tgamma 5", 1.5e-7);
174 # near(tgamma(5.5), 52.3427777845535, "tgamma 5.5", 1.5e-7);
175 # near(tgamma(9), 40320, "tgamma 9", 1.5e-7);
176 # near(lgamma(5), 3.17805383034795, "lgamma 4", 1.5e-7);
177 # near(lgamma(5.5), 3.95781396761872, "lgamma 5.5", 1.5e-7);
178 # near(lgamma(9), 10.6046029027452, "lgamma 9", 1.5e-7);
#####

The reason for this is fairly obvious from a quick look at this
section of POSIX.xs​:

#elif defined(USE_LONG_DOUBLE) && \
  (defined(HAS_FREXPL) || defined(HAS_ILOGBL)) && defined(HAS_SQRTL)
/* Use some of the Configure scans for long double math functions
* as the canary for all the C99 *l variants being defined. */
# define c99_acosh acoshl
# define c99_asinh asinhl
# define c99_atanh atanhl
# define c99_cbrt cbrtl
# define c99_copysign copysignl
# define c99_erf erfl
# define c99_erfc erfcl
# define c99_exp2 exp2l
# define c99_expm1 expm1l
# define c99_fdim fdiml
# define c99_fma fmal
# define c99_fmax fmaxl
# define c99_fmin fminl
# define c99_hypot hypotl
# define c99_ilogb ilogbl
# define c99_lgamma lgammal
# define c99_log1p log1pl
# define c99_log2 log2l
# define c99_logb logbl
# if defined(USE_64_BIT_INT) && QUADKIND == QUAD_IS_LONG_LONG &&
defined(HAS_LLRINTL)
# define c99_lrint llrintl
# elif defined(HAS_LRINTL)
# define c99_lrint lrintl
# endif
# if defined(USE_64_BIT_INT) && QUADKIND == QUAD_IS_LONG_LONG &&
defined(HAS_LLROUNDL)
# define c99_lround llroundl
# elif defined(HAS_LROUNDL)
# define c99_lround lroundl
# endif
# define c99_nan nanl
# define c99_nearbyint nearbyintl
# define c99_nextafter nextafterl
# define c99_nexttoward nexttowardl
# define c99_remainder remainderl
# define c99_remquo remquol
# define c99_rint rintl
# define c99_round roundl
# define c99_scalbn scalbnl
# ifdef HAS_SIGNBIT /* possibly bad assumption */
# define c99_signbit signbitl
# endif
# define c99_tgamma tgammal
# define c99_trunc truncl
#else

So the POSIX extension is assuming that if frexpl, ilogbl, and sqrtl
are present, then all the C99 long double functions are present and
functional, which appears not to be the case for NetBSD, or at least
some versions. See for example​:

<http​://gnats.netbsd.org/47122>

<https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00114.html>

Changing either Configure or POSIX itself to do a detailed probe for
each of these functions is theoretically possible but quite a slog.
I'm not sure what to recommend. How likely is it that people running
NetBSD are even interested in long doubles?

@p5pRT
Copy link
Author

p5pRT commented Aug 25, 2019

From @jkeenan

On Sun, 25 Aug 2019 15​:48​:07 GMT, craig.a.berry@​gmail.com wrote​:

On Sat, Aug 24, 2019 at 10​:14 AM James E Keenan via RT
<perlbug-followup@​perl.org> wrote​:

On Sat, 24 Aug 2019 04​:19​:03 GMT, jkeenan wrote​:

On Mon, 19 Aug 2019 00​:17​:32 GMT, jkeenan@​pobox.com wrote​:

If you never test for something, you'll never know where some
failures
may lie. Once you start testing, you may be chagrined at all the
failures you encounter.

That's what we're learning as we test more varied configurations
on
more
platforms in our smoke testing runs.

When we build perl with '-Duselongdouble' on NetBSD, perl builds
but
we
get failures in five files in the test suite. See these smoke
testing
reports submitted by Carlos Guevara for blead at commit 74cd64c
(Aug
18 2019).

netbsd-7.2 g++-4.8.5 http​://perl5.test-smoke.org/report/93327
netbsd-7.2 gcc-4.8.5 http​://perl5.test-smoke.org/report/93353
netbsd-8.1 g++-5.5.0 http​://perl5.test-smoke.org/report/93352
netbsd-8.1 gcc-5.5.0 http​://perl5.test-smoke.org/report/93329

Test failures​:
~~ ../cpan/ExtUtils-MakeMaker/t/03-xsstatic.t ..................
FAILED
5 Non-zero exit status​: 6
~~ ../cpan/ExtUtils-MakeMaker/t/basic.t ........................
FAILED
22-28 Non-zero exit status​: 7
~~ ../ext/POSIX/t/math.t .......................................
FAILED
Non-zero exit status​: 1 No plan found in TAP output
~~ ../t/op/sprintf2.t ..........................................
FAILED 1459
~~ ../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t .................
FAILED
5 71 Non-zero exit status​: 12

AFAICT these are among the first smoke test runs done on NetBSD
with
-Duselongdouble in the configuration. So there's no evidence
(yet)
that
this is a regression from a more idyllic state in the past.

Note that these failures do not include cpan/Scalar-List-
Utils/t/uniq.t,
where the commit that generated a failure on multiple platforms
has
been
reverted. (https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134358)

Note that these failures also do not reflect the clang++ problems
with
-Duselongdouble discussed in
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134371 and
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134375.  Neither clang
nor
clang++ is being used in any of these NetBSD smoke test rigs.

If there's anyone with NetBSD experience (or even mere access)
who
can
take a look at these, that would be appreciated.

Thank you very much.
Jim Keenan

perl perl perl

I have installed a NetBSD-8.0 VM and have built perl blead with
-Duselongdouble. I am getting the same test failures Carlos is
seeing
in his smoke-test reports. See attachments.

The failures in the cpan/ExtUtils-MakeMaker tests all implicate
TAP​::Formatter​::File and POSIX.PM​:

#####
25​:# Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm
aborted.
26​:# Compilation failed in require at
../../../../lib/TAP/Formatter/File.pm line 6.
27​:# BEGIN failed--compilation aborted at
../../../../lib/TAP/Formatter/File.pm line 6.
#####

Along the same lines, I am unable to install cpanm on NetBSD with '-
Duselongdouble'. I get​:

#####
Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm aborted.
#####

Now, when I test ext/POSIX/t/math.t with a longdouble build, I find
that I get *multiple* crashes which are only revealed when I comment
out crashing tests. Here are 3 groups of crashing tests and the
crash message associated with each.

#####
.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​:
Undefined PLT symbol "log1pl" (symnum = 183)
99 # near(expm1(2), 6.38905609893065, "expm1", 1e-9);
100 # near(expm1(1e-6), 1.00000050000017e-06, "expm1", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​:
Undefined PLT symbol "log2l" (symnum = 151)
127 # near(log1p(2), 1.09861228866811, "log1p", 1e-9);
128 # near(log1p(1e-6), 9.99999500000333e-07, "log1p", 1e-9);
129 # near(log2(8), 3, "log2", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​:
Undefined PLT symbol "tgammal" (symnum = 47)
173 # near(tgamma(5), 24, "tgamma 5", 1.5e-7);
174 # near(tgamma(5.5), 52.3427777845535, "tgamma 5.5", 1.5e-7);
175 # near(tgamma(9), 40320, "tgamma 9", 1.5e-7);
176 # near(lgamma(5), 3.17805383034795, "lgamma 4", 1.5e-7);
177 # near(lgamma(5.5), 3.95781396761872, "lgamma 5.5", 1.5e-7);
178 # near(lgamma(9), 10.6046029027452, "lgamma 9", 1.5e-7);
#####

The reason for this is fairly obvious from a quick look at this
section of POSIX.xs​:

#elif defined(USE_LONG_DOUBLE) && \
(defined(HAS_FREXPL) || defined(HAS_ILOGBL)) && defined(HAS_SQRTL)
/* Use some of the Configure scans for long double math functions
* as the canary for all the C99 *l variants being defined. */
# define c99_acosh acoshl
# define c99_asinh asinhl
# define c99_atanh atanhl
# define c99_cbrt cbrtl
# define c99_copysign copysignl
# define c99_erf erfl
# define c99_erfc erfcl
# define c99_exp2 exp2l
# define c99_expm1 expm1l
# define c99_fdim fdiml
# define c99_fma fmal
# define c99_fmax fmaxl
# define c99_fmin fminl
# define c99_hypot hypotl
# define c99_ilogb ilogbl
# define c99_lgamma lgammal
# define c99_log1p log1pl
# define c99_log2 log2l
# define c99_logb logbl
# if defined(USE_64_BIT_INT) && QUADKIND == QUAD_IS_LONG_LONG &&
defined(HAS_LLRINTL)
# define c99_lrint llrintl
# elif defined(HAS_LRINTL)
# define c99_lrint lrintl
# endif
# if defined(USE_64_BIT_INT) && QUADKIND == QUAD_IS_LONG_LONG &&
defined(HAS_LLROUNDL)
# define c99_lround llroundl
# elif defined(HAS_LROUNDL)
# define c99_lround lroundl
# endif
# define c99_nan nanl
# define c99_nearbyint nearbyintl
# define c99_nextafter nextafterl
# define c99_nexttoward nexttowardl
# define c99_remainder remainderl
# define c99_remquo remquol
# define c99_rint rintl
# define c99_round roundl
# define c99_scalbn scalbnl
# ifdef HAS_SIGNBIT /* possibly bad assumption */
# define c99_signbit signbitl
# endif
# define c99_tgamma tgammal
# define c99_trunc truncl
#else

So the POSIX extension is assuming that if frexpl, ilogbl, and sqrtl
are present, then all the C99 long double functions are present and
functional, which appears not to be the case for NetBSD, or at least
some versions. See for example​:

<http​://gnats.netbsd.org/47122>

<https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00114.html>

Changing either Configure or POSIX itself to do a detailed probe for
each of these functions is theoretically possible but quite a slog.
I'm not sure what to recommend. How likely is it that people running
NetBSD are even interested in long doubles?

I have no idea. We rarely get bug reports from "NetBSD people". We have been getting reports about problems with longdoubles lately, so one of our smoke-testers started to add configurations that built with longdoubles, and did so on multiple OSes. So this problem has only been reported by "Perl people". In NYC I know FreeBSD people and OpenBSD people but not NetBSD people.

I did a git checkout of v5.24.4 on NetBSD-8.0, built with -Duselongdouble and got the same kind of failures in ext/POSIX/t/math.t (and, consequently, in MakeMaker test) and even *more* test failures in t/op/sprintf2.t.

My belief is that Configure does not generally test for C99 functions, but from your analysis it appears that POSIX.pm does assume that if we have certain C99 functions we've got a lot more. Is that a fair statement?

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Aug 26, 2019

From @craigberry

On Sun, Aug 25, 2019 at 6​:28 PM James E Keenan via RT
<perlbug-followup@​perl.org> wrote​:

On Sun, 25 Aug 2019 15​:48​:07 GMT, craig.a.berry@​gmail.com wrote​:

So the POSIX extension is assuming that if frexpl, ilogbl, and sqrtl
are present, then all the C99 long double functions are present and
functional, which appears not to be the case for NetBSD, or at least
some versions. See for example​:

<http​://gnats.netbsd.org/47122>

<https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00114.html>

Changing either Configure or POSIX itself to do a detailed probe for
each of these functions is theoretically possible but quite a slog.
I'm not sure what to recommend. How likely is it that people running
NetBSD are even interested in long doubles?

I have no idea. We rarely get bug reports from "NetBSD people". We have been getting reports about problems with longdoubles lately, so one of our smoke-testers started to add configurations that built with longdoubles, and did so on multiple OSes. So this problem has only been reported by "Perl people". In NYC I know FreeBSD people and OpenBSD people but not NetBSD people.

I did a git checkout of v5.24.4 on NetBSD-8.0, built with -Duselongdouble and got the same kind of failures in ext/POSIX/t/math.t (and, consequently, in MakeMaker test) and even *more* test failures in t/op/sprintf2.t.

My belief is that Configure does not generally test for C99 functions, but from your analysis it appears that POSIX.pm does assume that if we have certain C99 functions we've got a lot more. Is that a fair statement?

Yes, that is a fair statement. The fallback is that it would use the
ordinary double equivalents if the long double functions are not
present, but that would not necessarily produce correct results.
Marking some tests TODO on NetBSD might be the most reasonable thing
since it could eventually get the missing functions.

@p5pRT
Copy link
Author

p5pRT commented Aug 26, 2019

From @khwilliamson

On 8/25/19 9​:47 AM, Craig A. Berry wrote​:

On Sat, Aug 24, 2019 at 10​:14 AM James E Keenan via RT
<perlbug-followup@​perl.org> wrote​:

On Sat, 24 Aug 2019 04​:19​:03 GMT, jkeenan wrote​:

On Mon, 19 Aug 2019 00​:17​:32 GMT, jkeenan@​pobox.com wrote​:

If you never test for something, you'll never know where some
failures
may lie. Once you start testing, you may be chagrined at all the
failures you encounter.

That's what we're learning as we test more varied configurations on
more
platforms in our smoke testing runs.

When we build perl with '-Duselongdouble' on NetBSD, perl builds but
we
get failures in five files in the test suite. See these smoke
testing
reports submitted by Carlos Guevara for blead at commit 74cd64c
(Aug
18 2019).

netbsd-7.2 g++-4.8.5 http​://perl5.test-smoke.org/report/93327
netbsd-7.2 gcc-4.8.5 http​://perl5.test-smoke.org/report/93353
netbsd-8.1 g++-5.5.0 http​://perl5.test-smoke.org/report/93352
netbsd-8.1 gcc-5.5.0 http​://perl5.test-smoke.org/report/93329

Test failures​:
~~ ../cpan/ExtUtils-MakeMaker/t/03-xsstatic.t ..................
FAILED
5 Non-zero exit status​: 6
~~ ../cpan/ExtUtils-MakeMaker/t/basic.t ........................
FAILED
22-28 Non-zero exit status​: 7
~~ ../ext/POSIX/t/math.t .......................................
FAILED
Non-zero exit status​: 1 No plan found in TAP output
~~ ../t/op/sprintf2.t ..........................................
FAILED 1459
~~ ../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t .................
FAILED
5 71 Non-zero exit status​: 12

AFAICT these are among the first smoke test runs done on NetBSD with
-Duselongdouble in the configuration. So there's no evidence (yet)
that
this is a regression from a more idyllic state in the past.

Note that these failures do not include cpan/Scalar-List-
Utils/t/uniq.t,
where the commit that generated a failure on multiple platforms has
been
reverted. (https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134358)

Note that these failures also do not reflect the clang++ problems
with
-Duselongdouble discussed in
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134371 and
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134375.  Neither clang nor
clang++ is being used in any of these NetBSD smoke test rigs.

If there's anyone with NetBSD experience (or even mere access) who
can
take a look at these, that would be appreciated.

Thank you very much.
Jim Keenan

perl perl perl

I have installed a NetBSD-8.0 VM and have built perl blead with
-Duselongdouble. I am getting the same test failures Carlos is seeing
in his smoke-test reports. See attachments.

The failures in the cpan/ExtUtils-MakeMaker tests all implicate TAP​::Formatter​::File and POSIX.PM​:

#####
25​:# Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm aborted.
26​:# Compilation failed in require at ../../../../lib/TAP/Formatter/File.pm line 6.
27​:# BEGIN failed--compilation aborted at ../../../../lib/TAP/Formatter/File.pm line 6.
#####

Along the same lines, I am unable to install cpanm on NetBSD with '-Duselongdouble'. I get​:

#####
Can't load TAP​::Formatter​::File​: Attempt to reload POSIX.pm aborted.
#####

Now, when I test ext/POSIX/t/math.t with a longdouble build, I find that I get *multiple* crashes which are only revealed when I comment out crashing tests. Here are 3 groups of crashing tests and the crash message associated with each.

#####
.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "log1pl" (symnum = 183)
99 # near(expm1(2), 6.38905609893065, "expm1", 1e-9);
100 # near(expm1(1e-6), 1.00000050000017e-06, "expm1", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "log2l" (symnum = 151)
127 # near(log1p(2), 1.09861228866811, "log1p", 1e-9);
128 # near(log1p(1e-6), 9.99999500000333e-07, "log1p", 1e-9);
129 # near(log2(8), 3, "log2", 1e-9);

.../blead/lib/perl5/5.31.4/amd64-netbsd-ld/auto/POSIX/POSIX.so​: Undefined PLT symbol "tgammal" (symnum = 47)
173 # near(tgamma(5), 24, "tgamma 5", 1.5e-7);
174 # near(tgamma(5.5), 52.3427777845535, "tgamma 5.5", 1.5e-7);
175 # near(tgamma(9), 40320, "tgamma 9", 1.5e-7);
176 # near(lgamma(5), 3.17805383034795, "lgamma 4", 1.5e-7);
177 # near(lgamma(5.5), 3.95781396761872, "lgamma 5.5", 1.5e-7);
178 # near(lgamma(9), 10.6046029027452, "lgamma 9", 1.5e-7);
#####

The reason for this is fairly obvious from a quick look at this
section of POSIX.xs​:

#elif defined(USE_LONG_DOUBLE) && \
(defined(HAS_FREXPL) || defined(HAS_ILOGBL)) && defined(HAS_SQRTL)
/* Use some of the Configure scans for long double math functions
* as the canary for all the C99 *l variants being defined. */
# define c99_acosh acoshl
# define c99_asinh asinhl
# define c99_atanh atanhl
# define c99_cbrt cbrtl
# define c99_copysign copysignl
# define c99_erf erfl
# define c99_erfc erfcl
# define c99_exp2 exp2l
# define c99_expm1 expm1l
# define c99_fdim fdiml
# define c99_fma fmal
# define c99_fmax fmaxl
# define c99_fmin fminl
# define c99_hypot hypotl
# define c99_ilogb ilogbl
# define c99_lgamma lgammal
# define c99_log1p log1pl
# define c99_log2 log2l
# define c99_logb logbl
# if defined(USE_64_BIT_INT) && QUADKIND == QUAD_IS_LONG_LONG &&
defined(HAS_LLRINTL)
# define c99_lrint llrintl
# elif defined(HAS_LRINTL)
# define c99_lrint lrintl
# endif
# if defined(USE_64_BIT_INT) && QUADKIND == QUAD_IS_LONG_LONG &&
defined(HAS_LLROUNDL)
# define c99_lround llroundl
# elif defined(HAS_LROUNDL)
# define c99_lround lroundl
# endif
# define c99_nan nanl
# define c99_nearbyint nearbyintl
# define c99_nextafter nextafterl
# define c99_nexttoward nexttowardl
# define c99_remainder remainderl
# define c99_remquo remquol
# define c99_rint rintl
# define c99_round roundl
# define c99_scalbn scalbnl
# ifdef HAS_SIGNBIT /* possibly bad assumption */
# define c99_signbit signbitl
# endif
# define c99_tgamma tgammal
# define c99_trunc truncl
#else

So the POSIX extension is assuming that if frexpl, ilogbl, and sqrtl
are present, then all the C99 long double functions are present and
functional, which appears not to be the case for NetBSD, or at least
some versions. See for example​:

<http​://gnats.netbsd.org/47122>

<https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00114.html>

Changing either Configure or POSIX itself to do a detailed probe for
each of these functions is theoretically possible but quite a slog.
I'm not sure what to recommend. How likely is it that people running
NetBSD are even interested in long doubles?

What if we just another canary or two based on what's missing in netbsd
currently? We might have to add canaries later, or perhaps when they
fix our canaries, they'll fix everything at the same time.

@p5pRT
Copy link
Author

p5pRT commented Aug 26, 2019

From @jkeenan

On Mon, 26 Aug 2019 18​:08​:56 GMT, craig.a.berry@​gmail.com wrote​:

My belief is that Configure does not generally test for C99
functions, but from your analysis it appears that POSIX.pm does
assume that if we have certain C99 functions we've got a lot more.
Is that a fair statement?

Yes, that is a fair statement. The fallback is that it would use the
ordinary double equivalents if the long double functions are not
present, but that would not necessarily produce correct results.
Marking some tests TODO on NetBSD might be the most reasonable thing
since it could eventually get the missing functions.

Note that the failures in ext/POSIX/t/math.t on NetBSD with -Duselongdouble are crashes, not mere test failures. There are at least 3 separate groups of crashes; only the first is being reflected in the smoke test results.

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@jkeenan
Copy link
Contributor

jkeenan commented Feb 1, 2020

From @khwilliamson

On 8/25/19 9​:47 AM, Craig A. Berry wrote​:

On Sat, Aug 24, 2019 at 10​:14 AM James E Keenan via RT
<perlbug-followup@​perl.org> wrote​:

On Sat, 24 Aug 2019 04​:19​:03 GMT, jkeenan wrote​:

On Mon, 19 Aug 2019 00​:17​:32 GMT, jkeenan@​pobox.com wrote​:

If you never test for something, you'll never know where some
failures
may lie. Once you start testing, you may be chagrined at all the
failures you encounter.
That's what we're learning as we test more varied configurations on
more
platforms in our smoke testing runs.
When we build perl with '-Duselongdouble' on NetBSD, perl builds but
we
get failures in five files in the test suite. See these smoke
testing
reports submitted by Carlos Guevara for blead at commit 74cd64c
(Aug
18 2019).
netbsd-7.2 g++-4.8.5 http​://perl5.test-smoke.org/report/93327
netbsd-7.2 gcc-4.8.5 http​://perl5.test-smoke.org/report/93353
netbsd-8.1 g++-5.5.0 http​://perl5.test-smoke.org/report/93352
netbsd-8.1 gcc-5.5.0 http​://perl5.test-smoke.org/report/93329

[snip]

[# Craig wrote:]

So the POSIX extension is assuming that if frexpl, ilogbl, and sqrtl
are present, then all the C99 long double functions are present and
functional, which appears not to be the case for NetBSD, or at least
some versions. See for example​:
<http​://gnats.netbsd.org/47122>
<https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00114.html>
Changing either Configure or POSIX itself to do a detailed probe for
each of these functions is theoretically possible but quite a slog.
I'm not sure what to recommend. How likely is it that people running
NetBSD are even interested in long doubles?

What if we just another canary or two based on what's missing in netbsd
currently? We might have to add canaries later, or perhaps when they
fix our canaries, they'll fix everything at the same time.

@khwilliamson Can you explain what you meant by 'canary' here? I'm unclear. Thanks.

@khwilliamson
Copy link
Contributor

I'm sorry; I apparently didn't respond to this, unless I did it on irc. Anyway, by canary, I meant some function for which we think its presence or absence would mean other similar functions will also be present or absent.

Now, I'm wondering if there's any connection between this ticked and #17668

@tonycoz
Copy link
Contributor

tonycoz commented Mar 29, 2020

Now, I'm wondering if there's any connection between this ticked and #17668

I don't think so, if it did have an effect it would be bus errors or segmentation faults

@bingos
Copy link
Contributor

bingos commented Jun 10, 2020

Just to add my observations from trying to build all perls from v5.8.9 up to v5.30.3 on a NetBSD 9.0 CPAN smoker with -Duselongdouble.

I got viable perls (i.e. no POSIX problems) from v5.8.9 up to v5.20.3.

v5.22.0 up to v5.30.3 all exhibit the POSIX problems.

@jkeenan
Copy link
Contributor

jkeenan commented Jun 11, 2020

Based on @bingos's research, I did a lot of bisecting on NetBSD-8.0 between v5.20.0 and v5.22.0. Based on that, I believe that the problems described in this ticket entered at at least two different commits (though the commits were part of a larger project). So I have created two new tickets, #17853 and #17854 to handle these. I believe that they will supersede this ticket, so I will close this ticket in about a week unless there is objection.

Thank you very much.
Jim Keenan

@jkeenan jkeenan self-assigned this Jun 11, 2020
@jkeenan jkeenan added the longdouble-builds -Duselongdouble related failures label Jun 11, 2020
@jkeenan
Copy link
Contributor

jkeenan commented Dec 27, 2020

Based on @bingos's research, I did a lot of bisecting on NetBSD-8.0 between v5.20.0 and v5.22.0. Based on that, I believe that the problems described in this ticket entered at at least two different commits (though the commits were part of a larger project). So I have created two new tickets, #17853 and #17854 to handle these. I believe that they will supersede this ticket, so I will close this ticket in about a week unless there is objection.

Closing ticket per plan above.

@jkeenan jkeenan closed this as completed Dec 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants