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

Failing tests for Perl 5.14.0 on Solaris 10 #11383

Closed
p5pRT opened this issue May 26, 2011 · 16 comments
Closed

Failing tests for Perl 5.14.0 on Solaris 10 #11383

p5pRT opened this issue May 26, 2011 · 16 comments

Comments

@p5pRT
Copy link

p5pRT commented May 26, 2011

Migrated from rt.perl.org#91678 (status was 'resolved')

Searchable as RT91678$

@p5pRT
Copy link
Author

p5pRT commented May 26, 2011

From nxadm@cpan.org

Created by nxadm@cpan.org

Hi,

The 64-bit build of Perl 5.14.0 on Solaris 10 does no pass all the tests
(make test). One set of failing tests only apply to threaded builds
(-Dthreads) and looking at the code of the failing tests confirms that the
fails are related to threading code. The smaller set of failing tests are
applicable to both threaded and non-threaded builds. In contrast, the
32-bit (threaded and non-threaded) build passes all the tests.

We can talk about a regression because Perl 5.12.3 (64-bit, threaded) builds
fine on Solaris 10 and passes all the tests.

The configure parameters are as follows​:

- Solaris 10, Sun Studio 12, 64-bit non-threaded perl build​:
./Configure -Duse64bitall -ders -Dprefix=$INSTALLPATH
-Dman1dir=$INSTALLPATH/share/man/man1 -Dman3dir=$INSTALLPATH/share/man/man3
-Dsiteman1dir=$INSTALLPATH/share/man/man1
-Dsiteman3dir=$INSTALLPATH/share/man/man3 -Duseshrplib -Dcf_by=$NAME
-Dcf_email=$EMAIL

- Solaris 10, Sun Studio 12, 64-bit threaded perl build​:
./Configure -Duse64bitall -Dusethreads -ders -Dprefix=$INSTALLPATH
-Dman1dir=$INSTALLPATH/share/man/man1 -Dman3dir=$INSTALLPATH/share/man/man3
-Dsiteman1dir=$INSTALLPATH/share/man/man1
-Dsiteman3dir=$INSTALLPATH/share/man/man3 -Duseshrplib -Dcf_by=$NAME
-Dcf_email=$EMAIL

Stripped down configure options where tried (just -Duse64bitall and
-Dusethread options with no effect).

The detailed output of the tests (harnass) is attached in two corresponding
files because of their size and verbosity (threaded_test_output.txt and
non-threaded_test_output.txt).

Having discussed this issue with the people of OpenCSW, a community Solaris
packaging effort (http​://www.opencsw.org), they agreed to offer access to
their buildfarm (with Solaris 8, 9 and 10 both in x86 and sparc versions) to
perl developers that want to help fix these building problems. Feel free to
contact me for additional tests, information, etc.

Perl Info

Flags:
    category=core
    severity=critical

Site configuration information for perl 5.14.0:

Configured by Claudio_Ramirez at Mon May 16 12:12:24 CEST 2011.

Summary of my perl5 (revision 5 version 14 subversion 0) configuration:

  Platform:
    osname=linux, osvers=2.6.38-8-generic,
archname=x86_64-linux-gnu-thread-multi
    uname='linux melbourne 2.6.38-8-generic #42-ubuntu smp mon apr 11
03:31:24 utc 2011 x86_64 x86_64 x86_64 gnulinux '
    config_args='-de -Dprefix=/home/claudio/lib/perlbrew/perls/perl-5.14.0
-Dusethreads -Duselargefiles -Dcccdlflags=-fPIC
-Dpager=/usr/bin/sensible-pager -Doptimize=-O2 -Duseshrplib
-Dcf_by=Claudio_Ramirez
-Dcf_email=claudio.ramirez@health.fgov.be-Duse64bitall
-Darchname=x86_64-linux-gnu -Dccflags=-DDEBIAN'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN
-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe
-fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.5.2', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib /usr/lib/x86_64-linux-gnu /lib64
/usr/lib64
    libs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.13'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E
-Wl,-rpath,/home/claudio/lib/perlbrew/perls/perl-5.14.0/lib/5.14.0/x86_64-linux-gnu-thread-multi/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib
-fstack-protector'

Locally applied patches:



@INC for perl 5.14.0:

/home/claudio/lib/perlbrew/perls/perl-5.14.0/lib/site_perl/5.14.0/x86_64-linux-gnu-thread-multi
    /home/claudio/lib/perlbrew/perls/perl-5.14.0/lib/site_perl/5.14.0

/home/claudio/lib/perlbrew/perls/perl-5.14.0/lib/5.14.0/x86_64-linux-gnu-thread-multi
    /home/claudio/lib/perlbrew/perls/perl-5.14.0/lib/5.14.0
    .


Environment for perl 5.14.0:
    HOME=/home/claudio
    LANG=nl_BE.UTF-8
    LANGUAGE=en
    LC_MESSAGES=en_US.UTF-8
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)

PATH=/home/claudio/lib/perlbrew/bin:/home/claudio/lib/perlbrew/perls/current/bin:/home/claudio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

PERLBREW_PATH=/home/claudio/lib/perlbrew/bin:/home/claudio/lib/perlbrew/perls/current/bin
    PERLBREW_PERL=perl-5.14.0
    PERLBREW_ROOT=/home/claudio/lib/perlbrew
    PERLBREW_VERSION=0.19
    PERL_BADLANG (unset)
    SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented May 26, 2011

From nxadm@cpan.org

* Solaris 10, Sun Studio 12, 64-bit non-threaded perl build​:
./Configure -Duse64bitall -ders -Dprefix=$INSTALLPATH -Dman1dir=$INSTALLPATH/share/man/man1 -Dman3dir=$INSTALLPATH/share/man/man3 -Dsiteman1dir=$INSTALLPATH/share/man/man1 -Dsiteman3dir=$INSTALLPATH/share/man/man3 -Duseshrplib -Dcf_by=$NAME -Dcf_email=$EMAIL

=> Failing tests​:
Failed 10 tests out of 1961, 99.49% okay.
  ../cpan/autodie/t/context.t
  ../cpan/autodie/t/context_lexical.t
  ../cpan/autodie/t/format-clobber.t
  ../cpan/autodie/t/usersub.t
  ../dist/Storable/t/attach_errors.t
  op/blocks.t
  op/caller.t
  op/gv.t
  op/method.t
  op/stash.t

=> harnass output​:
$ for i in `cat ~/tmp/test`; do echo "Testing $i​:"; cd /tmp/perl-5.14.0; export LD_LIBRARY_PATH=`pwd`​:$LD_LIBRARY_PATH; export PERL5LIB=/tmp/perl-5.14.0/lib; cd t; ./perl harness -v $i; echo ____________________________; done
Testing ../cpan/autodie/t/context.t​:
../cpan/autodie/t/context.t .. No subtests run

Test Summary Report


../cpan/autodie/t/context.t (Wstat​: 139 Tests​: 0 Failed​: 0)
  Non-zero wait status​: 139
  Parse errors​: No plan found in TAP output
Files=1, Tests=0, 2 wallclock secs ( 0.04 usr 0.01 sys + 0.32 cusr 0.10 csys = 0.47 CPU)
Result​: FAIL
____________________________
Testing ../cpan/autodie/t/context_lexical.t​:
../cpan/autodie/t/context_lexical.t ..
ok 1 - No autodie, no fatality
ok 2 - Autodie fatality for empty return in void context
ok 3 - No autodie, no fatality (after autodie used)
ok 4 - Autodie fatality for undef return in void context
ok 5 - Autodie fatality for empty list return
ok 6 - Autodie fatality for undef list return
ok 7 - No Autodie fatality for defined list return
ok 8 - No Autodie fatality for defined scalar return
ok 9 - Autodie fatality for undefined scalar return
1..9
All 9 subtests passed

Test Summary Report


../cpan/autodie/t/context_lexical.t (Wstat​: 139 Tests​: 9 Failed​: 0)
  Non-zero wait status​: 139
Files=1, Tests=9, 1 wallclock secs ( 0.05 usr 0.01 sys + 0.37 cusr 0.11 csys = 0.54 CPU)
Result​: FAIL
____________________________
Testing ../cpan/autodie/t/format-clobber.t​:
../cpan/autodie/t/format-clobber.t ..
1..21
ok 1 - use OtherTypes;
ok 2 - SCALAR slot intact at compile time
ok 3 - ARRAY slot intact at compile time
ok 4 - HASH slot intact at compile time
ok 5 - IO slot intact at compile time
ok 6 - FORMAT slot intact at compile time
ok 7 - SCALAR slot correct at compile time
ok 8 - ARRAY slot correct at compile time
ok 9 - HASH slot correct at compile time
ok 10 - IO slot correct at compile time
ok 11 - FORMAT slot correct at compile time
ok 12 - SCALAR slot intact at run time
ok 13 - ARRAY slot intact at run time
ok 14 - HASH slot intact at run time
ok 15 - IO slot intact at run time
not ok 16 - FORMAT slot intact at run time # TODO Copying formats fails due to a bug in Perl.

# Failed (TODO) test 'FORMAT slot intact at run time'
# at (eval 19) line 13.
ok 17 - SCALAR slot correct at run time
ok 18 - ARRAY slot correct at run time
ok 19 - HASH slot correct at run time
ok 20 - IO slot correct at run time
not ok 21 - FORMAT slot correct at run time # TODO Copying formats fails due to a bug in Perl.

# Failed (TODO) test 'FORMAT slot correct at run time'
# at (eval 19) line 28.
# got​: undef
# expected​: 'FORMAT(0x100200fe8)'
All 21 subtests passed

Test Summary Report


../cpan/autodie/t/format-clobber.t (Wstat​: 139 Tests​: 21 Failed​: 0)
  Non-zero wait status​: 139
Files=1, Tests=21, 1 wallclock secs ( 0.07 usr 0.02 sys + 0.43 cusr 0.11 csys = 0.63 CPU)
Result​: FAIL
____________________________
Testing ../cpan/autodie/t/usersub.t​:
../cpan/autodie/t/usersub.t ..
ok 1 - Mytest returns input
ok 2 - mytest returns undef without autodie
ok 3 - Mytest doesn't throw an exception without autodie
ok 4 - Mytest returns input with autodie
ok 5 - No error should be thrown
ok 6 - autodie mytest/undef throws exception isa autodie​::exception
ok 7 - no autodie can counter use autodie for user subs
ok 8 - mytest(undef) should return undef
ok 9 - mytest(foo) should return foo
ok 10 - No lingering failure effects
ok 11 - No lingering return effects
1..11
All 11 subtests passed

Test Summary Report


../cpan/autodie/t/usersub.t (Wstat​: 139 Tests​: 11 Failed​: 0)
  Non-zero wait status​: 139
Files=1, Tests=11, 1 wallclock secs ( 0.05 usr 0.02 sys + 0.37 cusr 0.11 csys = 0.55 CPU)
Result​: FAIL
____________________________
Testing ../dist/Storable/t/attach_errors.t​:
../dist/Storable/t/attach_errors.t ..
1..35
ok 1 - Storable does not die when STORABLE_freeze does not return references
ok 2 - Storable freezes to a string successfully
ok 3 - Storable dies correctly when STORABLE_freeze returns a referece
ok 4 - Storable dies with the expected error
ok 5 - Storable freezes to a string as expected
ok 6 - The object isa My​::GoodThaw
ok 7 - My​::GoodThaw thawed correctly as expected
ok 8 - BadThaw was frozen with references correctly
ok 9 - My​::BadThaw object dies when thawing as expected
ok 10 - Dies with the expected error message
ok 11 - My​::GoodAttach return as expected
ok 12 - The object isa My​::GoodAttach
ok 13 - The slightly-tricky good "returns a subclass" case returns as expected
ok 14 - BadAttach freezes as expected
ok 15 - BadAttach dies on thaw
ok 16 - BadAttach dies on thaw with the expected error message
ok 17 - Double checking $thawed was not set
ok 18 - BadAttach dies on thaw
ok 19 - BadAttach dies on thaw with the expected error message
ok 20 - Double checking $thawed was not set
ok 21 - BadAttach dies on thaw
ok 22 - BadAttach dies on thaw with the expected error message
ok 23 - Double checking $thawed was not set
ok 24 - BadAttach dies on thaw
ok 25 - BadAttach dies on thaw with the expected error message
ok 26 - Double checking $thawed was not set
ok 27 - BadAttach dies on thaw
ok 28 - BadAttach dies on thaw with the expected error message
ok 29 - Double checking $thawed was not set
ok 30 - BadAttach dies on thaw
ok 31 - BadAttach dies on thaw with the expected error message
ok 32 - Double checking $thawed was not set
ok 33 - BadAttach dies on thaw
ok 34 - BadAttach dies on thaw with the expected error message
ok 35 - Double checking $thawed was not set
All 35 subtests passed

Test Summary Report


../dist/Storable/t/attach_errors.t (Wstat​: 139 Tests​: 35 Failed​: 0)
  Non-zero wait status​: 139
Files=1, Tests=35, 1 wallclock secs ( 0.08 usr 0.02 sys + 0.30 cusr 0.10 csys = 0.50 CPU)
Result​: FAIL
____________________________
Testing op/blocks.t​:
op/blocks.t .. No subtests run

Test Summary Report


op/blocks.t (Wstat​: 139 Tests​: 0 Failed​: 0)
  Non-zero wait status​: 139
  Parse errors​: No plan found in TAP output
Files=1, Tests=0, 1 wallclock secs ( 0.07 usr 0.02 sys + 0.14 cusr 0.09 csys = 0.32 CPU)
Result​: FAIL
____________________________
Testing op/caller.t​:
op/caller.t .. No subtests run

Test Summary Report


op/caller.t (Wstat​: 139 Tests​: 0 Failed​: 0)
  Non-zero wait status​: 139
  Parse errors​: No plan found in TAP output
Files=1, Tests=0, 1 wallclock secs ( 0.07 usr 0.02 sys + 0.12 cusr 0.08 csys = 0.29 CPU)
Result​: FAIL
____________________________
Testing op/gv.t​:
op/gv.t ..
1..234
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8 - no type coersion when assigning to *{} retval
ok 9 - symbolic *{} returns symtab entry when FAKE
ok 10 - no type coersion when assigning to retval of symbolic *{}
ok 11 - compile-time *{} returns symtab entry when FAKE
ok 12 - no type coersion when assigning to retval of compile-time *{}
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29 - Warning on conversion to IV
ok 30
ok 31 - Warning on conversion to UV
ok 32
ok 33 - Warning on conversion to NV
ok 34 - Expect floating point zero
ok 35 - No warning on stringification
ok 36
ok 37 - Warning on conversion to IV
ok 38
ok 39 - Warning on conversion to UV
ok 40
ok 41 - Warning on conversion to NV
ok 42 - Expect floating point zero
ok 43 - No warning on stringification
ok 44
ok 45
ok 46
ok 47
ok 48
ok 49
ok 50
ok 51
ok 52
ok 53
ok 54
ok 55
ok 56
ok 57
ok 58
ok 59
ok 60
ok 61
ok 62
ok 63
ok 64
ok 65
ok 66
ok 67
ok 68
ok 69
ok 70
ok 71
ok 72
ok 73
ok 74
ok 75
ok 76
ok 77
ok 78
ok 79
ok 80
ok 81
ok 82
ok 83
ok 84 - lvalue assignment preserves globs
ok 85
ok 86 - __DIE__ handler never called
ok 87
ok 88 - tied elem assignment preserves globs
ok 89 - __DIE__ handler not called
ok 90
ok 91 - __DIE__ handler never called
Failed 143/234 subtests

Test Summary Report


op/gv.t (Wstat​: 139 Tests​: 91 Failed​: 0)
  Non-zero wait status​: 139
  Parse errors​: Bad plan. You planned 234 tests but ran 91.
Files=1, Tests=91, 1 wallclock secs ( 0.15 usr 0.02 sys + 0.21 cusr 0.12 csys = 0.50 CPU)
Result​: FAIL
____________________________
Testing op/method.t​:
op/method.t .. No subtests run

Test Summary Report


op/method.t (Wstat​: 139 Tests​: 0 Failed​: 0)
  Non-zero wait status​: 139
  Parse errors​: No plan found in TAP output
Files=1, Tests=0, 1 wallclock secs ( 0.07 usr 0.02 sys + 0.14 cusr 0.09 csys = 0.32 CPU)
Result​: FAIL
____________________________
Testing op/stash.t​:
op/stash.t ..
1..54
ok 1 - delete $​::{STDERR} and print a warning
ok 2 - Insert a non-GV in a stash, under warnings 'once'
ok 3 - stashes happen to be defined if not used
ok 4 - - work with hard refs too
ok 5 - stashes are defined if seen at compile time
ok 6 - - work with hard refs too
ok 7 - stashes are defined if a var is seen at compile time
ok 8 - - work with hard refs too
Failed 46/54 subtests

Test Summary Report


op/stash.t (Wstat​: 139 Tests​: 8 Failed​: 0)
  Non-zero wait status​: 139
  Parse errors​: Bad plan. You planned 54 tests but ran 8.
Files=1, Tests=8, 1 wallclock secs ( 0.08 usr 0.02 sys + 0.21 cusr 0.17 csys = 0.48 CPU)
Result​: FAIL
____________________________

@p5pRT
Copy link
Author

p5pRT commented May 26, 2011

@p5pRT
Copy link
Author

p5pRT commented Jun 20, 2011

From nxadm@apt-get.be

As expected from the releases notes of 5.14.1, the building problems on
Solaris 10 persist on this new Perl Release (same output of make test).

@p5pRT
Copy link
Author

p5pRT commented Sep 8, 2011

From @smpeters

On Mon Jun 20 10​:46​:05 2011, nxadm wrote​:

As expected from the releases notes of 5.14.1, the building problems on
Solaris 10 persist on this new Perl Release (same output of make test).

I'll get a virtual machine setup this weekend to try this out.

Steve

@p5pRT
Copy link
Author

p5pRT commented Sep 8, 2011

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

@p5pRT
Copy link
Author

p5pRT commented Sep 8, 2011

From nxadm@cpan.org

On Thu, Sep 8, 2011 at 6​:00 PM, Steve Peters via RT
<perlbug-followup@​perl.org> wrote​:

On Mon Jun 20 10​:46​:05 2011, nxadm wrote​:

As expected from the releases notes of 5.14.1, the building problems on
Solaris 10 persist on this new Perl Release (same output of make test).

I'll get a virtual machine setup this weekend to try this out.

Steve

Thank yoi, Steve. Feel free to contact me.

We are in the process of setting up (Solaris) smoke servers to detect
failing builds on time.

Claudio

@p5pRT
Copy link
Author

p5pRT commented Feb 23, 2012

From @rurban

I'm testing it now on my SunOS solaris 5.11 11.0 i86pc i386 i86pc
64-bit vm. I never tried 64-bit there, only building 32-bit regularly
with sun cc and gcc.

Those work fine - but all 32bit​:
/usr/local/bin/perl5.15.6d-nt
/usr/local/bin/perl5.15.4d-nt
/usr/local/bin/perl5.15.4d-nt-gcc
/usr/local/bin/perl5.15.4d-nt@​36df1ff0
/usr/local/bin/perl5.14.2d-gcc
/usr/local/bin/perl5.14.2d-nt
/usr/local/bin/perl5.14.2d-nt-gcc
/usr/local/bin/perl5.12.3-nt
/usr/local/bin/perl5.12.3d-gcc

So far I've got for 64-bit LD_LIBRARY_PATH=/usr/share/src/perl/build-
5.15.6d@​b79fac8f ./perl -f -Ilib pod/buildtoc -q
ld.so.1​: perl​: fatal​: relocation error​: R_AMD64_PC32​: file
/usr/share/src/perl/build-5.15.6d@​b79fac8f/libperl.so​: symbol main​:
value 0x280024ea8b8 does not fit

If I don't find anything we'd need a perl -V from your solaris box,
because you perlbug'ed it from ubuntu.
--
Reini Urban

@p5pRT
Copy link
Author

p5pRT commented Feb 23, 2012

From [Unknown Contact. See original ticket]

I'm testing it now on my SunOS solaris 5.11 11.0 i86pc i386 i86pc
64-bit vm. I never tried 64-bit there, only building 32-bit regularly
with sun cc and gcc.

Those work fine - but all 32bit​:
/usr/local/bin/perl5.15.6d-nt
/usr/local/bin/perl5.15.4d-nt
/usr/local/bin/perl5.15.4d-nt-gcc
/usr/local/bin/perl5.15.4d-nt@​36df1ff0
/usr/local/bin/perl5.14.2d-gcc
/usr/local/bin/perl5.14.2d-nt
/usr/local/bin/perl5.14.2d-nt-gcc
/usr/local/bin/perl5.12.3-nt
/usr/local/bin/perl5.12.3d-gcc

So far I've got for 64-bit LD_LIBRARY_PATH=/usr/share/src/perl/build-
5.15.6d@​b79fac8f ./perl -f -Ilib pod/buildtoc -q
ld.so.1​: perl​: fatal​: relocation error​: R_AMD64_PC32​: file
/usr/share/src/perl/build-5.15.6d@​b79fac8f/libperl.so​: symbol main​:
value 0x280024ea8b8 does not fit

If I don't find anything we'd need a perl -V from your solaris box,
because you perlbug'ed it from ubuntu.
--
Reini Urban

@p5pRT
Copy link
Author

p5pRT commented Feb 29, 2012

From @rurban

I was able to reproduce it with this (suncc, 64bit threads)​:

Summary of my perl5 (revision 5 version 14 subversion 2) configuration​:
 
  Platform​:
  osname=solaris, osvers=2.11, archname=i86pc-solaris-thread-multi-64
  uname='sunos solaris 5.11 11.0 i86pc i386 i86pc '
  config_args='-de -Dusedevel -Dinstallman1dir=none -
Dinstallman3dir=none -Dinstallsiteman1dir=none -Dinstallsiteman3dir=none
-DEBUGGING -Duseithreads -Duse64bitall -Dusethreads -Dcc=cc -Uuseshrplib
-Dcf_email=perl-bugs@​sun.com'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=define, usemultiplicity=define
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -m64 -DDEBUGGING -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV',
  optimize='-O -g',
  cppflags='-D_REENTRANT -m64 -DDEBUGGING'
  ccversion='Sun C 5.12 SunOS_i386 Spica 2011/07/21', gccversion='',
gccosandvers=''
  intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -m64 -L/opt/solstudiodev/prod/lib/amd64 -
L/lib/64 -L/usr/local/lib -L/usr/gnu/lib '
  libpth=/opt/solstudiodev/prod/lib/amd64 /lib/64 /usr/local/lib
/usr/gnu/lib /usr/lib /usr/ccs/lib
  libs=-lsocket -lnsl -lgdbm -ldb -ldl -lm -lpthread -lc
  perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
  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=' '
  cccdlflags='-KPIC', lddlflags=' -G -m64 -
L/opt/solstudiodev/prod/lib/amd64 -L/lib/64 -L/usr/local/lib -
L/usr/gnu/lib'

The failure is in anonymise_cv_maybe at ithread_clear, perl_destruct​:

Program received signal SIGSEGV, Segmentation fault.
0x000000000052ce68 in Perl_sv_vcatpvfn (my_perl=<value optimized out>,
sv=<value optimized out>, pat=<value optimized out>,
  patlen=<value optimized out>, args=<value optimized out>, svargs=
<value optimized out>, svmax=<value optimized out>,
  maybe_tainted=<value optimized out>) at sv.c​:10474
10474 elen = strlen(eptr);
Current language​: auto; currently minimal
(gdb) bt
#0 0x000000000052ce68 in Perl_sv_vcatpvfn (my_perl=<value optimized
out>, sv=<value optimized out>, pat=<value optimized out>,
  patlen=<value optimized out>, args=<value optimized out>, svargs=
<value optimized out>, svmax=<value optimized out>,
  maybe_tainted=<value optimized out>) at sv.c​:10474
#1 0x000000000052a6eb in Perl_sv_vsetpvfn (my_perl=<value optimized
out>, sv=<value optimized out>, pat=<value optimized out>,
  patlen=<value optimized out>, args=<value optimized out>, svargs=
<value optimized out>, svmax=<value optimized out>,
  maybe_tainted=<value optimized out>) at sv.c​:9892
#2 0x0000000000526d1e in Perl_vnewSVpvf (my_perl=<value optimized out>,
pat=<value optimized out>, args=<value optimized out>) at sv.c​:8588
#3 0x0000000000526c08 in Perl_newSVpvf (my_perl=<value optimized out>,
pat=<value optimized out>) at sv.c​:8572
#4 0x000000000051ff58 in S_anonymise_cv_maybe (my_perl=<value optimized
out>, gv=<value optimized out>, cv=<value optimized out>)
  at sv.c​:6013
#5 0x000000000051efe9 in Perl_sv_kill_backrefs (my_perl=<value
optimized out>, sv=<value optimized out>, av=<value optimized out>)
  at sv.c​:5783
#6 0x00000000004e7ed0 in Perl_magic_killbackrefs (my_perl=<value
optimized out>, sv=<value optimized out>, mg=<value optimized out>)
  at mg.c​:2378
#7 0x000000000051e5bf in S_sv_unmagicext_flags (my_perl=<value
optimized out>, sv=<value optimized out>, type=<value optimized out>,
  vtbl=<value optimized out>, flags=<value optimized out>) at
sv.c​:5437
#8 0x000000000051e827 in Perl_sv_unmagic (my_perl=<value optimized
out>, sv=<value optimized out>, type=<value optimized out>) at sv.c​:5476
#9 0x00000000005201a4 in Perl_sv_clear (my_perl=<value optimized out>,
orig_sv=<value optimized out>) at sv.c​:6084
#10 0x0000000000521396 in Perl_sv_free2 (my_perl=<value optimized out>,
sv=<value optimized out>) at sv.c​:6474
#11 0x0000000000521265 in Perl_sv_free (my_perl=<value optimized out>,
sv=<value optimized out>) at sv.c​:6451
#12 0x000000000050fbae in do_clean_all (my_perl=<value optimized out>,
sv=<value optimized out>) at sv.c​:614
#13 0x000000000050f21b in S_visit (my_perl=<value optimized out>, f=
<value optimized out>, flags=<value optimized out>,
  mask=<value optimized out>) at sv.c​:420
#14 0x000000000050fbdb in Perl_sv_clean_all (my_perl=<value optimized
out>) at sv.c​:633
#15 0x0000000000458ebf in perl_destruct (my_perl=<value optimized out>)
at perl.c​:1085
#16 0xfffffd7ffb8f3d51 in S_ithread_clear (my_perl=<value optimized
out>, thread=<value optimized out>) at threads.xs​:228
#17 0xfffffd7ffb8f7776 in XS_threads_join (my_perl=<value optimized
out>, cv=<value optimized out>) at threads.xs​:1306
#18 0x000000000050d043 in Perl_pp_entersub (my_perl=<value optimized
out>) at pp_hot.c​:3046
#19 0x00000000004d6580 in Perl_runops_debug (my_perl=<value optimized
out>) at dump.c​:2266
#20 0x000000000045c15c in Perl_call_sv (my_perl=<value optimized out>,
sv=<value optimized out>, flags=<value optimized out>) at perl.c​:2647
#21 0x0000000000461573 in Perl_call_list (my_perl=<value optimized out>,
oldscope=<value optimized out>, paramList=<value optimized out>)
  at perl.c​:4714
#22 0x000000000044ed8d in S_process_special_blocks (my_perl=<value
optimized out>, fullname=<value optimized out>, gv=<value optimized
out>,
  cv=<value optimized out>) at op.c​:6462
#23 0x000000000044e9e8 in Perl_newATTRSUB (my_perl=<value optimized
out>, floor=<value optimized out>, o=<value optimized out>,
  proto=<value optimized out>, attrs=<value optimized out>, block=
<value optimized out>) at op.c​:6433
#24 0x0000000000496d8e in Perl_yyparse (my_perl=<value optimized out>,
gramtype=<value optimized out>) at perly.y​:317
#25 0x000000000045a9c4 in S_parse_body (my_perl=<value optimized out>,
env=<value optimized out>, xsinit=<value optimized out>) at perl.c​:2194
#26 0x0000000000459b0c in perl_parse (my_perl=<value optimized out>,
xsinit=<value optimized out>, argc=<value optimized out>,
  argv=<value optimized out>, env=<value optimized out>) at
perl.c​:1613
#27 0x000000000043d445 in main (argc=<value optimized out>, argv=<value
optimized out>, env=<value optimized out>) at perlmain.c​:118
(gdb) up 4
#4 0x000000000051ff58 in S_anonymise_cv_maybe (my_perl=<value optimized
out>, gv=<value optimized out>, cv=<value optimized out>)
  at sv.c​:6013

6009 /* if not, anonymise​: */
6010 stash = GvSTASH(gv) && HvNAME(GvSTASH(gv))
6011 ? HvENAME(GvSTASH(gv)) : NULL;
6012 gvname = Perl_newSVpvf(aTHX_ "%s​::__ANON__",
6013 stash ? stash :
"__ANON__");

I'm not so good in knowing all 64bit registers on suncc by hard.
r13 seems to be the gv in question, but p Perl_sv_dump(my_perl,
0xaa6a58)
SEGV at if (!PL_perlio)

(gdb) p *(GV*)0xaa6a58
$7 = {sv_any = 0xa9bbb8, sv_refcnt = 0, sv_flags = 75530249, sv_u =
{svu_pv = 0xaa9118 "", svu_iv = 11178264, svu_uv = 11178264,
  svu_rv = 0xaa9118, svu_array = 0xaa9118, svu_hash = 0xaa9118, svu_gp
= 0xaa9118, svu_fp = 0xaa9118}}
(gdb) p *(XPVGV*)0xa9bbb8
$8 = {xmg_stash = 0x0, xmg_u = {xmg_magic = 0x0, xmg_ourstash = 0x0},
xpv_cur = 2, xpv_len = 0, xiv_u = {xivu_iv = 10466336,
  xivu_uv = 10466336, xivu_i32 = 10466336, xivu_namehek = 0x9fb420},
xnv_u = {xnv_nv = 5.300217672829891e-317, xgv_stash = 0xa3b150,
  xpad_cop_seq = {xlow = 10727760, xhigh = 0}, xbm_s = {xbm_previous =
10727760, xbm_flags = 0 '\0', xbm_rare = 0 '\0'}}}

and the gv_stash is indeed corrupt​:
(gdb) p *(HV*)0xa3b150
$9 = {sv_any = 0x9e7eb8, sv_refcnt = 1, sv_flags = 570458124, sv_u =
{svu_pv = 0xa3ccf8 "\220\213�", svu_iv = 10734840, svu_uv = 10734840,
  svu_rv = 0xa3ccf8, svu_array = 0xa3ccf8, svu_hash = 0xa3ccf8, svu_gp
= 0xa3ccf8, svu_fp = 0xa3ccf8}}

--
Reini Urban

@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2012

From @rurban

bisected to v5.15.3-240-gf778bcf universal.c​: sv_does() UTF8 cleanup

This is the first commit after 5.14.2 which fixes solaris suncc 64bit
threaded. But I doubt it is the fix which needs to be backported to
5.14.3

commit f778bcf
Author​: Brian Fraser <fraserbn@​gmail.com>
Date​: Fri Sep 30 13​:42​:31 2011 -0700

  universal.c​: sv_does() UTF8 cleanup.
 
  This adds _sv, _pv, and _pvn forms to sv_does, and changes it to use
  sv_ref() instead of sv_reftype().

The problem is that the previous commits from on v5.15.3-201-gd35fec6
broke compilation for sv.o, and the sv_does() fix looks unrelated to the
solaris problem at all.

"sv.c", line 9181​: undefined symbol​: PERL_ARGS_ASSERT_SV_REF
--
Reini Urban

@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2012

From @Hugmeir

On Wed, Feb 29, 2012 at 7​:42 PM, Reini Urban via RT <
perlbug-followup@​perl.org> wrote​:

bisected to v5.15.3-240-gf778bcf universal.c​: sv_does() UTF8 cleanup

This is the first commit after 5.14.2 which fixes solaris suncc 64bit
threaded. But I doubt it is the fix which needs to be backported to
5.14.3

commit f778bcf
Author​: Brian Fraser <fraserbn@​gmail.com>
Date​: Fri Sep 30 13​:42​:31 2011 -0700

universal.c​: sv_does() UTF8 cleanup.

This adds _sv, _pv, and _pvn forms to sv_does, and changes it to use
sv_ref() instead of sv_reftype().

The problem is that the previous commits from on v5.15.3-201-gd35fec6
broke compilation for sv.o, and the sv_does() fix looks unrelated to the
solaris problem at all.

"sv.c", line 9181​: undefined symbol​: PERL_ARGS_ASSERT_SV_REF
--
Reini Urban

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=91678

This seems like a separate bug, since those commits were never merged to
5.14. The anonymize_cv_maybe code originally had several issues with
PERL_DESTRUCT_LEVEL=2, and you pointing out that perl_destruct is related
makes this all the more suspicious. Plus, I wouldn't trust myself to have
fixed all of them : D
I can't help you much beyond that right now, since I'm away for the rest of
the week (company meeting, Vegas, huzzah!) and don't have access to a
Solaris box at the moment. Sorry!

The undefined symbol PERL_ARGS_ASSERT_SV_REF was me being sloppy in that
branch, and committing without running make regen first. I think it should
be fixed if you run that before compiling. However, I don't see how that
could affect the sv_does commit, since grepping through proto.h shows that
the symbol is already defined by then?

@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2012

From @rurban

Finished a revised bisecter with make regen added.

  ./Configure -des -Duseithreads -Duse64bitall -Dusethreads -Dcc=cc -
Duseshrplib -Dusedevel && make regen test_prep && (cd t; ./TEST
re/pat_advanced_thr.t; cd ..)

The first good commit for solaris suncc 64bit threaded since 5.12.4 is
v5.15.3-232-g1bac5ec 1bac5ec sv.c​: S_anonymise_cv_maybe UTF8 cleanup.
which fixes precisely the error I got in gdb. This fix has nothing to do
with UTF8, it just correctly uses a HEK for GV names.

STATIC void
S_anonymise_cv_maybe(pTHX_ GV *gv, CV* cv)
{
- char *stash;
  SV *gvname;
  GV *anongv;

@​@​ -5913,10 +5912,10 @​@​ S_anonymise_cv_maybe(pTHX_ GV *gv, CV* cv)
  }

  /* if not, anonymise​: */
- stash = GvSTASH(gv) && HvNAME(GvSTASH(gv))
- ? HvENAME(GvSTASH(gv)) : NULL;
- gvname = Perl_newSVpvf(aTHX_ "%s​::__ANON__",
- stash ? stash : "__ANON__");
+ gvname = (GvSTASH(gv) && HvNAME(GvSTASH(gv)) &&
HvENAME(GvSTASH(gv)))
+ ? newSVhek(HvENAME_HEK(GvSTASH(gv)))
+ : newSVpvn_flags( "__ANON__", 8, 0 );
+ sv_catpvs(gvname, "​::__ANON__");
  anongv = gv_fetchsv(gvname, GV_ADDMULTI, SVt_PVCV);
  SvREFCNT_dec(gvname);

I cherry-picked 1bac5ec on 5.14.2 and all tests pass now.
So just 1bac5ec must be added to 5.14.3 to fix this 5.14 regression.
--
Reini Urban

@p5pRT
Copy link
Author

p5pRT commented Aug 22, 2012

From nxadm@apt-get.be

I would propose to close this bug. Reini's patch fixes the problem.

(There is however a non-related test failure in perl 5.16.1; I am
working on the bugreport.)

@p5pRT
Copy link
Author

p5pRT commented Aug 22, 2012

From [Unknown Contact. See original ticket]

I would propose to close this bug. Reini's patch fixes the problem.

(There is however a non-related test failure in perl 5.16.1; I am
working on the bugreport.)

@p5pRT
Copy link
Author

p5pRT commented Aug 22, 2012

@cpansprout - Status changed from 'open' to 'resolved'

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

1 participant