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

test suite failure on powerpc with -Duselongdouble #10362

Open
p5pRT opened this issue May 3, 2010 · 5 comments
Open

test suite failure on powerpc with -Duselongdouble #10362

p5pRT opened this issue May 3, 2010 · 5 comments

Comments

@p5pRT
Copy link

p5pRT commented May 3, 2010

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

Searchable as RT74864$

@p5pRT
Copy link
Author

p5pRT commented May 3, 2010

From @ntyni

This is a bug report for perl from Niko Tyni <ntyni@​debian.org>,
generated with the help of perlbug 1.39 running under perl 5.12.0.


I'm seeing 5.12.0 test failures on the Debian powerpc architecture
with -Duselongdouble -Duse64bitint (but not with just -Duse64bitint.)

Test Summary Report


op/inc.t (Wstat​: 65280 Tests​: 34 Failed​: 0)
  Non-zero exit status​: 255
  Parse errors​: Bad plan. You planned 54 tests but ran 34.
op/pack.t (Wstat​: 0 Tests​: 14697 Failed​: 28)
  Failed tests​: 521, 694, 749, 804, 1024, 1079, 1134, 1354
  1409, 1464, 1684, 1739, 1794, 2014, 2069
  2124, 2344, 2399, 2454, 2894, 2949, 3004
  3059, 3444, 3499, 13234, 13289, 13344
op/stash.t (Wstat​: 0 Tests​: 31 Failed​: 0)
  TODO passed​: 26
../cpan/Math-BigInt/t/bare_mbi.t (Wstat​: 0 Tests​: 3273 Failed​: 1)
  Failed test​: 3087
../cpan/Math-BigInt/t/bigintpm.t (Wstat​: 0 Tests​: 3279 Failed​: 1)
  Failed test​: 3093
../cpan/Math-BigInt/t/sub_mbi.t (Wstat​: 0 Tests​: 3278 Failed​: 1)
  Failed test​: 3087
Files=1803, Tests=357905, 12620 wallclock secs (1354.30 usr 35.30 sys + 10177.06 cusr 276.30 csys = 11842.96 CPU)
Result​: FAIL

At least op/pack.t fails on 5.10.1 too, so this is not a 5.12 regression.

I assume the 128-bit long doubles on this platform are actually a sum of
two 64-bit doubles, which "does not conform to the IEEE floating-point
standard" [1] and "has serious arithmetic anomalies" [2].

If this something that can not be supported, perhaps Configure should
detect such a platform and disable the longdouble setting or error out?

(This is also http​://bugs.debian.org/578295 )

[1] http​://en.wikipedia.org/wiki/Long_double
[2] http​://gcc.gnu.org/ml/gcc-help/2006-10/msg00138.html



Flags​:
  category=core
  severity=low


Site configuration information for perl 5.12.0​:

Configured by Debian Project at Sun May 2 12​:18​:53 UTC 2010.

Summary of my perl5 (revision 5 version 12 subversion 0) configuration​:
 
  Platform​:
  osname=linux, osvers=2.6.26-2-powerpc, archname=powerpc-linux-gnu-thread-multi-64int-ld
  uname='linux pescetti 2.6.26-2-powerpc #1 tue mar 9 23​:07​:18 utc 2010 ppc gnulinux '
  config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=powerpc-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.12 -Darchlib=/usr/lib/perl/5.12 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.12.0 -Dsitearch=/usr/local/lib/perl/5.12.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dusemorebits -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=both -Doptimize=-O2 -O0 -Uuseshrplib -des'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=define, usemultiplicity=define
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=undef, uselongdouble=define
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -O0 -g',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.4.3', gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=87654321
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long long', ivsize=8, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8
  alignbytes=16, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64
  libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
  perllibs=-ldl -lm -lpthread -lc -lcrypt
  libc=/lib/libc-2.10.2.so, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.10.2'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -O0 -g -L/usr/local/lib -fstack-protector'

Locally applied patches​:
  DEBPKG​:debian/arm_thread_stress_timeout - http​://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
  DEBPKG​:debian/cpan_config_path - Set location of CPAN​::Config to /etc/perl as /usr may not be writable.
  DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
  DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
  DEBPKG​:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
  DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @​INC directories.
  DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
  DEBPKG​:debian/extutils_hacks - Various debian-specific ExtUtils changes
  DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
  DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
  DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
  DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
  DEBPKG​:debian/m68k_thread_stress - http​://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS.
  DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian
  DEBPKG​:debian/module_build_man_extensions - http​://bugs.debian.org/479460 Adjust Module​::Build manual page extensions for the Debian Perl policy
  DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
  DEBPKG​:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File.
  DEBPKG​:fixes/net_smtp_docs - http​://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net​::SMTP 'Port' option
  DEBPKG​:fixes/processPL - http​://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules.
  DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
  DEBPKG​:debian/disable-zlib-bundling - Disable zlib bundling in Compress​::Raw​::Zlib
  DEBPKG​:debian/cpanplus_definstalldirs - http​://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
  DEBPKG​:debian/cpanplus_config_path - Save local versions of CPANPLUS​::Config​::System into /etc/perl.
  DEBPKG​:fixes/autodie-flock - http​://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc
  DEBPKG​:debian/devel-ppport-ia64-optim - http​://bugs.debian.org/548943 Work around an ICE on ia64
  DEBPKG​:fixes/cpanplus-without-home - http​://bugs.debian.org/577011 [rt.cpan.org #52988] Fix CPANPLUS test failures when HOME doesn't exist
  DEBPKG​:patchlevel - http​://bugs.debian.org/567489 List packaged patches for 5.12.0-1 in patchlevel.h


@​INC for perl 5.12.0​:
  lib
  /etc/perl
  /usr/local/lib/perl/5.12.0
  /usr/local/share/perl/5.12.0
  /usr/lib/perl5
  /usr/share/perl5
  /usr/lib/perl/5.12
  /usr/share/perl/5.12
  /usr/local/lib/site_perl
  .


Environment for perl 5.12.0​:
  HOME=/home/ntyni
  LANG=en_US.UTF-8
  LANGUAGE (unset)
  LC_CTYPE=fi_FI.UTF-8
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)
  PATH=/usr/local/bin​:/usr/bin​:/bin​:/usr/bin/X11​:/usr/games
  PERL_BADLANG (unset)
  SHELL=/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented May 4, 2010

From @nwc10

On Mon, May 03, 2010 at 01​:30​:34AM -0700, Niko Tyni wrote​:

I'm seeing 5.12.0 test failures on the Debian powerpc architecture
with -Duselongdouble -Duse64bitint (but not with just -Duse64bitint.)

I assume the 128-bit long doubles on this platform are actually a sum of
two 64-bit doubles, which "does not conform to the IEEE floating-point
standard" [1] and "has serious arithmetic anomalies" [2].

That seems a reasonable assumption, given that sparc64 Debian with 16 byte
long doubles does work.

If this something that can not be supported, perhaps Configure should
detect such a platform and disable the longdouble setting or error out?

That seems reasonable. Not sure how to do it.

(This is also http​://bugs.debian.org/578295 )

[1] http​://en.wikipedia.org/wiki/Long_double
[2] http​://gcc.gnu.org/ml/gcc-help/2006-10/msg00138.html

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented May 4, 2010

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

@p5pRT
Copy link
Author

p5pRT commented Dec 11, 2017

From zefram@fysh.org

Niko Tyni wrote​:

I assume the 128-bit long doubles on this platform are actually a sum of
two 64-bit doubles, which "does not conform to the IEEE floating-point
standard" [1] and "has serious arithmetic anomalies" [2].

If this something that can not be supported, perhaps Configure should
detect such a platform and disable the longdouble setting or error out?

A double-double format *can* be well-behaved, if its two halves are
constrained to have a fixed exponent difference and all the edge cases
are handled properly. I concur that we should detect the badly-behaved
ones and reject their use.

Can someone offer me an account on one of these PowerPC Linux systems
with the suspect long double? Having never experienced a double-double
system before, I'd like to experiment to see exactly where the numeric
semantics break down, and thus how to efficiently detect the problem.

-zefram

@p5pRT
Copy link
Author

p5pRT commented Dec 11, 2017

From @sisyphus

-----Original Message-----
From​: Zefram
Sent​: Monday, December 11, 2017 12​:10 PM
To​: perl5-porters@​perl.org
Subject​: Re​: [perl #74864] test suite failure on powerpc
with -Duselongdouble

Can someone offer me an account on one of these PowerPC Linux systems with
the suspect long double? Having never experienced a double-double system
before, I'd like to experiment to see exactly where the numeric semantics
break down, and thus how to efficiently detect the problem.

I have such a system - though I'm unable to provide you with access to it.

For some additional info on the M​::BI failures, see​:
https://rt.perl.org/Public/Bug/Display.html?id=120758

I've been consistently seeing those failures, right through to the present
(5.27.6).
They arise solely because the value 1e+129 is miscalculated.
Replace it with a value that gets assigned correctly, and those tests pass.

Until recently, those have been the only tests that were failing. (I think
Jarkko provided some fixes for the double-double builds a year or two ago.)
Currently, however, there is one (and only one) *other* test file that is
failing - namely dist/Time-HiRes/t/utime.t.

With perl-5.27.6, I get​:

#######################################
$ perl t/utime.t

# Testing for subsecond file timestamps (mtime) in
/home/sisyphus-sis/comp/perl-5.27.6/dist/Time-HiRes
# Subsecond file timestamps in
/home/sisyphus-sis/comp/perl-5.27.6/dist/Time-HiRes​: OK
1..18
# I am the main process 3288, starting the watchdog process...
# The watchdog process 3289 launched, continuing testing...
# I am the watchdog process 3289, sleeping for 360 seconds...
# $^O = linux, atime = 1.111111111, mtime = 2.222222222
# utime $fh
ok 1 - One file changed
not ok 2 - atime set correctly
# Failed test 'atime set correctly'
# at t/utime.t line 76.
# got​: '1.11111111'
# expected​: '1.111111111'
not ok 3 - mtime set correctly
# Failed test 'mtime set correctly'
# at t/utime.t line 77.
# got​: '2.222222221'
# expected​: '2.222222222'
#utime $filename
ok 4 - One file changed
not ok 5 - atime set correctly
# Failed test 'atime set correctly'
# at t/utime.t line 85.
# got​: '1.11111111'
# expected​: '1.111111111'
not ok 6 - mtime set correctly
# Failed test 'mtime set correctly'
# at t/utime.t line 86.
# got​: '2.222222221'
# expected​: '2.222222222'
utime $filename and $fh
ok 7 - Two files changed
not ok 8 - File 1 atime set correctly
# Failed test 'File 1 atime set correctly'
# at t/utime.t line 96.
# got​: '1.11111111'
# expected​: '1.111111111'
not ok 9 - File 1 mtime set correctly
# Failed test 'File 1 mtime set correctly'
# at t/utime.t line 97.
# got​: '2.222222221'
# expected​: '2.222222222'
not ok 10 - File 2 atime set correctly
# Failed test 'File 2 atime set correctly'
# at t/utime.t line 101.
# got​: '1.11111111'
# expected​: '1.111111111'
not ok 11 - File 2 mtime set correctly
# Failed test 'File 2 mtime set correctly'
# at t/utime.t line 102.
# got​: '2.222222221'
# expected​: '2.222222222'
# utime undef sets time to now
ok 12 - Two files changed
ok 13 - File 1 atime set correctly
ok 14 - File 1 mtime set correctly
ok 15 - File 2 atime set correctly
ok 16 - File 2 mtime set correctly
# negative atime dies
ok 17 - negative time error
# negative mtime dies;
ok 18 - negative time error
# I am the main process 3288, terminating the watchdog process 3289 before
it terminates me in 359 seconds (testing took 1 seconds).
# kill KILL 3289 = 1
# All done.
# Looks like you failed 8 tests of 18.
#######################################

I have neither investigated nor filed a report for those utime.t failures.
(I'm happy to file a separate report for that ... I've just been waiting for
the tuits.)

Cheers,
Rob

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants