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 09_roundtrip.t fails in 5.40.0 RELEASE #22352

Open
blastwave opened this issue Jun 28, 2024 · 1 comment
Open

TEST 09_roundtrip.t fails in 5.40.0 RELEASE #22352

blastwave opened this issue Jun 28, 2024 · 1 comment

Comments

@blastwave
Copy link

Incredibly similar to https://github.com/Perl/perl5/issues/21233

However this is a really trivial Linux machine on AMD64 and nothing even
remotely interesting about it.  There is no Microsoft SystemD on this
machine as it is based on the Devuan distro goodness. It runs nothing at
all other than NTPd and the SSHd daemons. I use it for baseline testing.

To begin with we have to get the perl -V stuff : 

io$ pwd
/opt/bw/build/perl-5.40.0_amd64_linux.002
io$ echo $LD_LIBRARY_PATH
/opt/bw/build/perl-5.40.0_amd64_linux.002
io$ 
io$ ls -lapb ./libperl.so 
-rwxr-xr-x 1 dclarke devl 7682376 Jun 23 07:09 ./libperl.so
io$ 
io$ ls -lapb ./perl
-rwxr-xr-x 1 dclarke devl 33312 Jun 23 07:09 ./perl
io$ 
io$ ./perl -V 
Can't locate Config.pm in @INC (you may need to install the Config module) (@INC entries checked: /opt/bw/lib/perl5/site_perl/5.40.0/x86_64-linux-ld /opt/bw/lib/perl5/site_perl/5.40.0 /opt/bw/lib/perl5/5.40.0/x86_64-linux-ld /opt/bw/lib/perl5/5.40.0).
BEGIN failed--compilation aborted.
io$ 

So that is annoying. The only way to get that info is to actually do the
install of the broken perl that can not pass a testsuite.

OKay so then I backup the affected destination area and then install and
we see : 

io$ 
io$ which perl
/opt/bw/bin/perl
io$ ldd /opt/bw/bin/perl
        linux-vdso.so.1 (0x00007f6f83df0000)
        libperl.so => /opt/bw/lib/perl5/5.40.0/x86_64-linux-ld/CORE/libperl.so (0x00007f6f83800000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6f83cff000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f6f83cc3000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6f8361b000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6f83df2000)
io$ 
io$ perl -V
Summary of my perl5 (revision 5 version 40 subversion 0) configuration:
   
  Platform:
    osname=linux
    osvers=6.9.5-genunix
    archname=x86_64-linux-ld
    uname='linux io 6.9.5-genunix #1 smp wed jun 19 03:59:56 gmt 2024 x86_64 gnulinux '
    config_args='-Dprefix=/opt/bw -Dmksymlinks -Accflags=-m64 -g -O0 -fno-builtin -march=k8 -mtune=k8 -fno-fast-math -mno-fancy-math-387 -malign-double -m128bit-long-double -mstackrealign -mpreferred-stack-boundary=8 -L/opt/bw/lib -I/opt/bw/include -Wl,-rpath=/opt/bw/lib,-enable-new-dtags'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=undef
    usemultiplicity=undef
    use64bitint=define
    use64bitall=define
    uselongdouble=define
    usemymalloc=n
    default_inc_excludes_dot=define
  Compiler:
    cc='/opt/bw/bin/gcc'
    ccflags ='-m64 -g -O0 -fno-builtin -march=k8 -mtune=k8 -fno-fast-math -mno-fancy-math-387 -malign-double -m128bit-long-double -mstackrealign -mpreferred-stack-boundary=8 -L/opt/bw/lib -I/opt/bw/include -Wl,-rpath=/opt/bw/lib,-enable-new-dtags -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
    optimize='-g -O0'
    cppflags='-m64 -g -O0 -fno-builtin -march=k8 -mtune=k8 -fno-fast-math -mno-fancy-math-387 -malign-double -m128bit-long-double -mstackrealign -mpreferred-stack-boundary=8 -L/opt/bw/lib -I/opt/bw/include -Wl,-rpath=/opt/bw/lib,-enable-new-dtags -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong'
    ccversion=''
    gccversion='14.1.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='/opt/bw/bin/gcc'
    ldflags =' -fstack-protector-strong'
    libpth=/opt/bw/lib /usr/lib/x86_64-linux-gnu /usr/lib /usr/lib64
    libs=-lpthread -ldl -lm -lcrypt -lutil -lc
    perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc
    libc=/lib/x86_64-linux-gnu/libc.so.6
    so=so
    useshrplib=true
    libperl=libperl.so
    gnulibc_version='2.38'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags='-Wl,-E -Wl,-rpath,/opt/bw/lib/perl5/5.40.0/x86_64-linux-ld/CORE'
    cccdlflags='-fPIC'
    lddlflags='-shared -g -O0 -fstack-protector-strong'


Characteristics of this binary (from libperl): 
  Compile-time options:
    HAS_LONG_DOUBLE
    HAS_STRTOLD
    HAS_TIMES
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_HASH_FUNC_SIPHASH13
    PERL_HASH_USE_SBOX32
    PERL_MALLOC_WRAP
    PERL_OP_PARENT
    PERL_PRESERVE_IVUV
    PERL_USE_SAFE_PUTENV
    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 linux
  Compiled at Jun 24 2024 06:28:12
  %ENV:
    PERL_DEBUG_FULL_TEST="1"
    PERL_TEST_MEMORY="4"
  @INC:
    /opt/bw/lib/perl5/site_perl/5.40.0/x86_64-linux-ld
    /opt/bw/lib/perl5/site_perl/5.40.0
    /opt/bw/lib/perl5/5.40.0/x86_64-linux-ld
    /opt/bw/lib/perl5/5.40.0
io$ 


Then we get to the tests that fail wherein I did run the testsuite over
and over with a few different env vars set as per documentation. Just to
see if a few of the longer tests would run. They did. Some of them.

In the ./t directory I did run the ../perl harness procedure with a few
env vars set :

AUTHOR_TESTING=1
LD_LIBRARY_PATH=/opt/bw/build/perl-5.40.0_amd64_linux.002
PERL_DEBUG_FULL_TEST=1
PERL_TEST_MEMORY=4

Before anyone asks about the "AUTHOR_TESTING=1" suffice it to say that
nothing else seemed to make a difference so why not give it a whirl? It
made no difference in the test results. The same tests fail over and
over :


Test Summary Report
-------------------
../cpan/Archive-Tar/t/09_roundtrip.t                               (Wstat: 1280 (exited 5) Tests: 8 Failed: 5)
  Failed tests:  4-8
  Non-zero exit status: 5
../cpan/Pod-Simple/t/corpus.t                                      (Wstat: 3328 (exited 13) Tests: 1 Failed: 0)
  Non-zero exit status: 13
  Parse errors: Bad plan.  You planned 59 tests but ran 1.
../cpan/Pod-Simple/t/htmlbat.t                                     (Wstat: 3328 (exited 13) Tests: 1 Failed: 0)
  Non-zero exit status: 13
  Parse errors: Bad plan.  You planned 15 tests but ran 1.
Files=2898, Tests=4049246, 12037 wallclock secs (2742.46 usr 115.04 sys + 10482.65 cusr 468.10 csys = 13808.25 CPU)
Result: FAIL
Finished test run at Tue Jun 25 17:22:20 2024.
real 12056.87
user 13230.94
sys 584.38
io$ 



There we see the "09_roundtrip.t" fails. Again. Same as in bug #21233.
So that is not new. The other two are new ones however I am guessing
it is because I always build perl "out of tree" in a separate build
directory.


---------------------------------------------------------------------
    bork    bork    bork       TEST  09_roundtrip.t   FAILS
---------------------------------------------------------------------

#   Failed test 'src/long/bar.tar roundtrip on file names'
#   at t/09_roundtrip.t line 229.
#     Structures begin differing at:
#          $got->[2] = 'directory'
#     $expected->[2] = 'directory/'

#   Failed test 'src/long/prefix-directory-concat.tar roundtrip on file names'
#   at t/09_roundtrip.t line 229.
#     Structures begin differing at:
#          $got->[0] = 'directory-that-fits-into-the-tar-name-field-but-will-be-put-into-prefix-for-subdirectories-or-files'
#     $expected->[0] = 'directory-that-fits-into-the-tar-name-field-but-will-be-put-into-prefix-for-subdirectories-or-files/'
gnutar: Invalid blocksize 9729 bytes.
gnutar: Success. Sync pipe read error pid 20242 ret 0
gnutar: Success. Ib 0 Ob 1 e 0 p 0 g 10 chan 5.
gnutar: Success. Sync pipe EOF error pid 20242 ret 0

#   Failed test 'Failed running 'gnutar tvf src/linktest/linktest_with_dir.tar''
#   at t/09_roundtrip.t line 192.

#   Failed test 'src/long/foo.tgz roundtrip on file names'
#   at t/09_roundtrip.t line 229.
#     Structures begin differing at:
#          $got->[2] = 'directory'
#     $expected->[2] = 'directory/'

#   Failed test 'src/long/foo.tbz roundtrip on file names'
#   at t/09_roundtrip.t line 229.
#     Structures begin differing at:
#          $got->[2] = 'directory'
#     $expected->[2] = 'directory/'
# Looks like you failed 5 tests of 8.
../cpan/Archive-Tar/t/09_roundtrip.t ................................. 
Dubious, test returned 5 (wstat 1280, 0x500)
Failed 5/8 subtests 


So that is a familiar failure.



Other oddball things I see that make me curious about the really large
memory tests :

../dist/Storable/t/freeze.t .......................................... ok
# skip huge array, need PERL_TEST_MEMORY >= 55
# skip huge hash, need PERL_TEST_MEMORY >= 96
# building test input: huge string
# running test: huge string
# building test input: array with huge element
# running test: array with huge element
# building test input: hash with huge value
# running test: hash with huge value
../dist/Storable/t/huge.t ............................................ ok

I guess I need to run those on a much larger machine with buckets of
memory installed. In fact, wow, perhaps a machine with at least 128G
of memory or more.

OKay .. next issues are likely due to permissions.

---------------------------------------------------------------------
    bork    bork    bork       TEST  corpus.t   FAILS
---------------------------------------------------------------------

Can't write-open /opt/bw/build/perl-5.40.0/cpan/Pod-Simple/t/corpus/2202jp.xml_out: Permission denied
# Looks like your test exited with 13 just after 1.
../cpan/Pod-Simple/t/corpus.t ........................................ 
Dubious, test returned 13 (wstat 3328, 0xd00)
Failed 58/59 subtests 


I suspect this is because I *always* build perl "out of tree" and the
actual pristine sources from the tarball are *always* extracted as
root. That means that the sources can not be mangled by anyone or any
process.  Seems to work great with things like GCC where nothing will
attempt to bork around with the source tree during a build or test.

Not so with PERL ?


---------------------------------------------------------------------
    bork    bork    bork       TEST   htmlbat.t   FAILS
---------------------------------------------------------------------

Can't mkdir /opt/bw/build/perl-5.40.0/cpan/Pod-Simple/t/delme-c7c40-out: Permission denied at t/htmlbat.t line 42.
# Looks like your test exited with 13 just after 1.
../cpan/Pod-Simple/t/htmlbat.t ....................................... 
Dubious, test returned 13 (wstat 3328, 0xd00)
Failed 14/15 subtests 

Yep. Looks like the PERL testsuite wants to bork around with the actual
source tree as opposed to using the build directory. That can not be a
good way to do things.

So there ya have it.

Also ... what is this RELEASE_TESTING thing ?

../cpan/autodie/t/version.t .......................................... skipped: Release test.  Set $ENV{RELEASE_TESTING} to true to run.

Sounds like a good item to test.


-- 
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken 


@Leont
Copy link
Contributor

Leont commented Jun 29, 2024

So that is annoying. The only way to get that info is to actually do the
install of the broken perl that can not pass a testsuite.

You can do `./perl -Ilib -V

I suspect this is because I always build perl "out of tree" and the
actual pristine sources from the tarball are always extracted as
root. That means that the sources can not be mangled by anyone or any
process. Seems to work great with things like GCC where nothing will
attempt to bork around with the source tree during a build or test.

Not so with PERL ?

I would consider that a bug. It's in a contributed module though, it should be fixed upstream.

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

No branches or pull requests

3 participants