FAQ
# New Ticket Created by James E Keenan
# Please include the string: [perl #118603]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=118603 >


In the past week t/op/stash.t has begun to experience test failures on
Darwin/PPC. These appear to be the first test failures specific to this
platform since January 2013.

Here is the output of: cd t;./perl harness -v op/stash.t;cd -

#####
op/stash.t ..
1..58
ok 1 - delete $::{STDERR} and print a warning
ok 2 - Insert a non-GV in a stash, under warnings 'once'
ok 3 - Defining an XSUB over an existing sub with no stash under warnings
ok 4 - stashes happen to be defined if not used
ok 5 - - work with hard refs too
ok 6 - stashes are defined if seen at compile time
ok 7 - - work with hard refs too
ok 8 - stashes are defined if a var is seen at compile time
ok 9 - - work with hard refs too
ok 10 - package A::B; sub a { // }; %A::=""
ok 11 - use Exporter; package A; sub a { // }; delete $::{...
ok 12 - works in eval{}
ok 13 - works in eval("")
ok 14 - referencing a non-existent stash doesn't produce stricture errors
ok 15 - referencing a non-existent stash element doesn't produce
stricture errors
ok 16 - deleted stash entry leaves CV with valid GV isa B::GV
not ok 17 - ...and CVf_ANON set
ok 18 - ...and an __ANON__ name
ok 19 - ...but leaves stash intact
ok 20 - cleared stash leaves CV with valid GV isa B::GV
not ok 21 - ...and CVf_ANON set
ok 22 - ...and an __ANON__ name
ok 23 - ...but leaves stash intact
ok 24 - undefed stash leaves CV with valid GV isa B::GV
not ok 25 - ...and CVf_ANON set
ok 26 - ...and an __ANON__ name
ok 27 - ...and an __ANON__ stash
ok 28 - cleared stash leaves anon CV with valid GV
ok 29 - ...but leaves the stash intact
ok 30 - undefed stash leaves anon CV with valid GV
not ok 31 - ...and an __ANON__ stash # TODO STASHES not anonymized
# Failed test 31 - ...and an __ANON__ stash at op/stash.t line 155
# got undef
# expected "__ANON__"
ok 32 - anonymised CV whose stash is detached still has a GV
ok 33 - CV anonymised when its stash is detached becomes __ANON__::__ANON__
ok 34 - NULL CvSTASH on named sub
ok 35 - orphaned CV has valid GV
ok 36 - orphaned CV has anon GV
ok 37 - ex-named CV has valid GV
ok 38 - ex-named CV has anon GV
ok 39 - anon CV has valid GV
ok 40 - anon CV has anon GV
ok 41 - stub records the package it was compiled in
ok 42 - stub records the file it was compiled in
ok 43 - definition overrides the package it was compiled in
ok 44 - definition overrides the file it was compiled in
# Failed test 17 - ...and CVf_ANON set at op/stash.t line 104
# got "0"
# expected "128"
# Failed test 21 - ...and CVf_ANON set at op/stash.t line 116
# got "0"
# expected "128"
# Failed test 25 - ...and CVf_ANON set at op/stash.t line 128
# got "0"
# expected "128"
ok 45 - no segfault with overload/deleted stash entry [\#58530]
ok 46 - __ANON__ sub called ok
ok 47 - globs stringify the same way when stashes are moved
ok 48 - ref() returns the same thing when an object’s stash is moved
ok 49 - objects stringify the same way when their stashes are moved
ok 50 - __PACKAGE__ returns the same when the current stash is moved
ok 51 - globs stringify the same way when stashes are detached
ok 52 - ref() returns the same thing when an object’s stash is detached
ok 53 - objects stringify the same way when their stashes are detached
ok 54 - __PACKAGE__ returns the same when the current stash is detached
ok 55 - setting stash name during undef has no effect
ok 56 - packages ending with :: are self-consistent
ok 57 - ' is equivalent to :: before a null
ok 58 - no crashing or errors when clobbering the current package
Failed 3/58 subtests

Test Summary Report
-------------------
op/stash.t (Wstat: 0 Tests: 58 Failed: 3)
    Failed tests: 17, 21, 25
Files=1, Tests=58, 1 wallclock secs ( 0.07 usr 0.02 sys + 0.17 cusr
0.21 csys = 0.47 CPU)
Result: FAIL
/Users/jimk/gitwork/perl
Sat Jun 22 12:37:38 EDT 2013
#####

Given the lack of speed on this platform, a formal 'git bisect' would
take days. However, I have manually bisected the problem this far:

#####
commit 31476221e8e03a317c349f057be115891edca18c
Author: Father Chrysostomos <[email protected]>
AuthorDate: Fri Jun 14 00:40:23 2013 -0700
Commit: Father Chrysostomos <[email protected]>
CommitDate: Fri Jun 14 18:13:16 2013 -0700

t/op/stash.t PASS
#####
commit b8a02ff16952a74a5f8d4679c7439a5c543a0fcf
Author: David Golden <[email protected]>
AuthorDate: Wed Jun 19 22:28:22 2013 -0400
Commit: David Golden <[email protected]>
CommitDate: Wed Jun 19 22:28:22 2013 -0400

t/op/stash.t FAIL as above
#####

So the failure emerged between June 14 and June 19. As of this morning,
blead was experiencing these failures as well.

If someone can suggest either specific commits to test or debugging
procedures, please contact me ASAP.

Thank you very much.
Jim Keenan

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

    Platform:
      osname=darwin, osvers=8.11.0, archname=darwin-2level
      uname='darwin macintosh-9.local 8.11.0 darwin kernel version
8.11.0: wed oct 10 18:26:00 pdt 2007; root:xnu-792.24.17~1release_ppc
power macintosh powerpc '
      config_args='-des'
      hint=recommended, useposix=true, d_sigaction=define
      useithreads=undef, usemultiplicity=undef
      useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
      use64bitint=undef, use64bitall=undef, uselongdouble=undef
      usemymalloc=n, bincompat5005=undef
    Compiler:
      cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing
-pipe -I/usr/local/include -I/opt/local/include',
      optimize='-O3',
      cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe
-I/usr/local/include -I/opt/local/include'
      ccversion='', gccversion='4.0.1 (Apple Computer, Inc. build 5250)',
gccosandvers=''
      intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
      d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
      ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
      alignbytes=8, prototype=define
    Linker and Libraries:
      ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='
-L/usr/local/lib -L/opt/local/lib'
      libpth=/usr/local/lib /opt/local/lib /usr/lib
      libs=-ldbm -ldl -lm -lc
      perllibs=-ldl -lm -lc
      libc=, so=dylib, useshrplib=false, libperl=libperl.a
      gnulibc_version=''
    Dynamic Linking:
      dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
      cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup
-L/usr/local/lib -L/opt/local/lib'


Characteristics of this binary (from libperl):
    Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
                          PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
                          PERL_PRESERVE_IVUV PERL_SAWAMPERSAND
USE_LARGE_FILES
                          USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                          USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
    Built under darwin
    Compiled at May 18 2013 12:31:26
    %ENV:
      PERLBREW_BASHRC_VERSION="0.59"
      PERLBREW_HOME="/Users/jimk/.perlbrew"
      PERLBREW_MANPATH=""
      PERLBREW_PATH="/Users/jimk/perl5/perlbrew/bin"
      PERLBREW_ROOT="/Users/jimk/perl5/perlbrew"
      PERLBREW_VERSION="0.59"
    @INC:
      /usr/local/lib/perl5/site_perl/5.18.0/darwin-2level
      /usr/local/lib/perl5/site_perl/5.18.0
      /usr/local/lib/perl5/5.18.0/darwin-2level
      /usr/local/lib/perl5/5.18.0
      /usr/local/lib/perl5/site_perl/5.16.0
      /usr/local/lib/perl5/site_perl/5.14.2
      /usr/local/lib/perl5/site_perl/5.14.0
      /usr/local/lib/perl5/site_perl/5.12.0
      /usr/local/lib/perl5/site_perl/5.10.1
      /usr/local/lib/perl5/site_perl/5.10.0
      /usr/local/lib/perl5/site_perl/5.8.6
      /usr/local/lib/perl5/site_perl
      .
#####

Search Discussions

  • Nicholas Clark at Jun 22, 2013 at 5:50 pm

    On Sat, Jun 22, 2013 at 10:34:55AM -0700, James E Keenan wrote:

    Test Summary Report
    -------------------
    op/stash.t (Wstat: 0 Tests: 58 Failed: 3)
    Failed tests: 17, 21, 25
    Files=1, Tests=58, 1 wallclock secs ( 0.07 usr 0.02 sys + 0.17 cusr
    0.21 csys = 0.47 CPU)
    Result: FAIL
    /Users/jimk/gitwork/perl
    Sat Jun 22 12:37:38 EDT 2013
    #####

    Given the lack of speed on this platform, a formal 'git bisect' would
    take days. However, I have manually bisected the problem this far:

    #####
    commit 31476221e8e03a317c349f057be115891edca18c
    Author: Father Chrysostomos <[email protected]>
    AuthorDate: Fri Jun 14 00:40:23 2013 -0700
    Commit: Father Chrysostomos <[email protected]>
    CommitDate: Fri Jun 14 18:13:16 2013 -0700

    t/op/stash.t PASS
    #####
    commit b8a02ff16952a74a5f8d4679c7439a5c543a0fcf
    Author: David Golden <[email protected]>
    AuthorDate: Wed Jun 19 22:28:22 2013 -0400
    Commit: David Golden <[email protected]>
    CommitDate: Wed Jun 19 22:28:22 2013 -0400

    t/op/stash.t FAIL as above
    #####

    So the failure emerged between June 14 and June 19. As of this morning,
    blead was experiencing these failures as well.

    If someone can suggest either specific commits to test or debugging
    procedures, please contact me ASAP.
    Do the tests fail in the same way if you run them as

    ./perl t/op/stash.t

    If so, given that the difference between those two commits is this:

    $ git diff --stat 31476221e8e03a317c349f057be115891edca18c..b8a02ff16952a74a5f8d4679c7439a5c543a0fcf
      Makefile.SH | 10 +-
      Porting/Maintainers.pl | 16 +-
      Porting/core-cpan-diff | 6 +-
      Porting/release_managers_guide.pod | 10 +
      cpan/Archive-Tar/lib/Archive/Tar.pm | 6 +-
      cpan/Archive-Tar/lib/Archive/Tar/Constant.pm | 2 +-
      cpan/Archive-Tar/lib/Archive/Tar/File.pm | 6 +-
      cpan/Getopt-Long/CHANGES | 7 +
      cpan/Getopt-Long/README | 2 +-
      cpan/Getopt-Long/lib/Getopt/Long.pm | 18 +-
      cpan/HTTP-Tiny/lib/HTTP/Tiny.pm | 22 +-
      cpan/Time-Piece/Piece.pm | 2 +-
      cpan/Unicode-Collate/Changes | 5 +-
      cpan/Unicode-Collate/Collate.pm | 36 +--
      cpan/Unicode-Collate/README | 4 +-
      dist/Module-CoreList/lib/Module/CoreList/Utils.pm | 111 ++++++++++
      doop.c | 4 +-
      ext/B/t/concise.t | 8 +-
      gv.c | 6 +-
      handy.h | 6 +
      lib/locale.t | 16 +-
      lib/version/t/07locale.t | 26 ++-
      op.c | 2 +-
      pad.c | 2 +-
      perl.h | 5 +
      pod/perldelta.pod | 259 ++++++----------------
      pod/perlfunc.pod | 30 ++-
      pod/perllocale.pod | 236 +++++++++++++-------
      pod/perlrecharclass.pod | 4 +-
      pod/perlsyn.pod | 4 +-
      pp.c | 10 +-
      pp_hot.c | 11 +-
      regcomp.c | 12 +-
      sv.c | 42 +++-
      sv.h | 2 +-
      t/lib/warnings/op | 4 +-
      t/op/concat2.t | 2 +-
      t/op/lexsub.t | 10 +-
      t/op/magic.t | 12 +-
      t/porting/customized.dat | 6 +-
      t/porting/customized.t | 2 +-
      t/porting/diag.t | 1 +
      t/porting/known_pod_issues.dat | 1 +
      t/re/subst.t | 2 +-
      win32/FindExt.pm | 18 ++
      win32/config_sh.PL | 13 --
      46 files changed, 594 insertions(+), 425 deletions(-)


    which is no Configure changes, config.sh won't change in any of the revisions
    in that range. (I see that Makefile.SH has, so Makefile might end up changing,
    but the make below should take care of that)

    So, I think you can rebuild between each bisect by taking any build tree
    between those two commits, and updating the necessary code with just:

    make perl lib/auto/B/B.bundle

    (or possibly make -j2 perl lib/auto/B/B.bundle )

    before re-running the test.
    That ought to cut your re-build time down massively.
    (And I think for the 49 commits you'll only need at most 7 rebuilds)

    Nicholas Clark
  • Nicholas Clark at Jun 22, 2013 at 8:10 pm

    On Sat, Jun 22, 2013 at 06:50:01PM +0100, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 10:34:55AM -0700, James E Keenan wrote:

    If someone can suggest either specific commits to test or debugging
    procedures, please contact me ASAP.
    At a guess, try this one:

    commit 51c78f1b91bbcd7a261c4a5d75b0d6f66140edca
    Author: Peter Martini <[email protected]>
    Date: Tue Jun 18 00:07:05 2013 -0400

         Upgrade cv_flags_t from 16 to 32 bits.

         Its main use is in a struct otherwise filled with pointers, which
         means on 32-bit architectures its almost certainly taking up 32
         bits anyway.

    diff --git a/sv.h b/sv.h
    index 449b23e..b0fd5b2 100644
    --- a/sv.h
    +++ b/sv.h
    @@ -531,7 +531,7 @@ struct xpvgv {
          union _xnvu xnv_u;
      };

    -typedef U16 cv_flags_t;
    +typedef U32 cv_flags_t;

      #define _XPVCV_COMMON \
          HV * xcv_stash; \



    The guess being that it's something to do with passing a 32 bit value into
    a format which expects 16 bits, which doesn't show up on a little endian
    system.

    In which case, OMG, we need a big endian smoker. Just one. Someone. Please.

    Nicholas Clark
  • Father Chrysostomos via RT at Jun 22, 2013 at 9:20 pm

    On Sat Jun 22 13:10:53 2013, nicholas wrote:
    On Sat, Jun 22, 2013 at 06:50:01PM +0100, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 10:34:55AM -0700, James E Keenan wrote:

    If someone can suggest either specific commits to test or debugging
    procedures, please contact me ASAP.
    At a guess, try this one:

    commit 51c78f1b91bbcd7a261c4a5d75b0d6f66140edca
    Author: Peter Martini <[email protected]>
    Date: Tue Jun 18 00:07:05 2013 -0400

    Upgrade cv_flags_t from 16 to 32 bits.

    Its main use is in a struct otherwise filled with pointers, which
    means on 32-bit architectures its almost certainly taking up 32
    bits anyway.

    diff --git a/sv.h b/sv.h
    index 449b23e..b0fd5b2 100644
    --- a/sv.h
    +++ b/sv.h
    @@ -531,7 +531,7 @@ struct xpvgv {
    union _xnvu xnv_u;
    };

    -typedef U16 cv_flags_t;
    +typedef U32 cv_flags_t;

    #define _XPVCV_COMMON \
    HV * xcv_stash; \
    Yes, that is it.

    --

    Father Chrysostomos


    ---
    via perlbug: queue: perl5 status: open
    https://rt.perl.org:443/rt3/Ticket/Display.html?id=118603
  • Nicholas Clark at Jun 22, 2013 at 9:23 pm

    On Sat, Jun 22, 2013 at 02:20:26PM -0700, Father Chrysostomos via RT wrote:
    On Sat Jun 22 13:10:53 2013, nicholas wrote:

    --- a/sv.h
    +++ b/sv.h
    @@ -531,7 +531,7 @@ struct xpvgv {
    union _xnvu xnv_u;
    };

    -typedef U16 cv_flags_t;
    +typedef U32 cv_flags_t;

    #define _XPVCV_COMMON \
    HV * xcv_stash; \
    Yes, that is it.
    I've bisected on a big endian linux machine I have access to, and that's it.
    Running tests on a fix...

    Nicholas Clark
  • Nicholas Clark at Jun 22, 2013 at 9:32 pm

    On Sat, Jun 22, 2013 at 10:22:57PM +0100, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 02:20:26PM -0700, Father Chrysostomos via RT wrote:
    On Sat Jun 22 13:10:53 2013, nicholas wrote:

    --- a/sv.h
    +++ b/sv.h
    @@ -531,7 +531,7 @@ struct xpvgv {
    union _xnvu xnv_u;
    };

    -typedef U16 cv_flags_t;
    +typedef U32 cv_flags_t;

    #define _XPVCV_COMMON \
    HV * xcv_stash; \
    Yes, that is it.
    I've bisected on a big endian linux machine I have access to, and that's it.
    Running tests on a fix...
    Try this:

    commit 13d58115f07b12133a2df2821b893f0fc20065d9
    Author: Nicholas Clark <[email protected]>
    Date: Sat Jun 22 14:25:26 2013 -0700

         Update B's size/offset for CvFLAGS to U32, following commit 51c78f1b91bbcd7a.

         B.xs contains a table of offsets and sizes for members of the various SV
         structures. This needs updating as 51c78f1b91bbcd7a changed CvFLAGS from
         U16 to U32. This ommision won't be noticed on little endian platforms, but on
         big endian platforms B::CV::CvFLAGS will return 0 instead of the true value.

    diff --git a/ext/B/B.xs b/ext/B/B.xs
    index fdeca72..fbe6be6 100644
    --- a/ext/B/B.xs
    +++ b/ext/B/B.xs
    @@ -1328,7 +1328,7 @@ MODULE = B PACKAGE = B::IV
      #define PVCV_file_ix sv_char_pp | offsetof(struct xpvcv, xcv_file)
      #define PVCV_outside_ix sv_SVp | offsetof(struct xpvcv, xcv_outside)
      #define PVCV_outside_seq_ix sv_U32p | offsetof(struct xpvcv, xcv_outside_seq)
    -#define PVCV_flags_ix sv_U16p | offsetof(struct xpvcv, xcv_flags)
    +#define PVCV_flags_ix sv_U32p | offsetof(struct xpvcv, xcv_flags)

      #define PVHV_max_ix sv_STRLENp | offsetof(struct xpvhv, xhv_max)


    Pushed as origin/smoke-me/nicholas/RT-118603


    Nicholas Clark
  • James E Keenan at Jun 22, 2013 at 11:03 pm

    On 6/22/13 5:32 PM, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 10:22:57PM +0100, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 02:20:26PM -0700, Father Chrysostomos via RT wrote:
    On Sat Jun 22 13:10:53 2013, nicholas wrote:

    --- a/sv.h
    +++ b/sv.h
    @@ -531,7 +531,7 @@ struct xpvgv {
    union _xnvu xnv_u;
    };

    -typedef U16 cv_flags_t;
    +typedef U32 cv_flags_t;

    #define _XPVCV_COMMON \
    HV * xcv_stash; \
    Yes, that is it.
    I've bisected on a big endian linux machine I have access to, and that's it.
    Running tests on a fix...
    Try this:

    commit 13d58115f07b12133a2df2821b893f0fc20065d9
    Author: Nicholas Clark<[email protected]>
    Date: Sat Jun 22 14:25:26 2013 -0700
    Pushed as origin/smoke-me/nicholas/RT-118603
    t/op/stash.t PASS in this branch; now running full make test
  • Craig A. Berry at Jun 23, 2013 at 5:35 pm

    On Sat, Jun 22, 2013 at 6:03 PM, James E Keenan wrote:
    On 6/22/13 5:32 PM, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 10:22:57PM +0100, Nicholas Clark wrote:
    Pushed as origin/smoke-me/nicholas/RT-118603
    t/op/stash.t PASS in this branch; now running full make test
    I get all tests passing for that branch with the following
    configuration on Darwin PPC:

    % ./perl -Ilib -V
    Summary of my perl5 (revision 5 version 19 subversion 2) configuration:
       Commit id: 13d58115f07b12133a2df2821b893f0fc20065d9
       Platform:
         osname=darwin, osvers=9.8.0, archname=darwin-2level
         uname='darwin brianor.local 9.8.0 darwin kernel version 9.8.0: wed
    jul 15 16:57:01 pdt 2009; root:xnu-1228.15.4~1release_ppc power
    macintosh '
         config_args='-Dusedevel -des'
         hint=recommended, useposix=true, d_sigaction=define
         useithreads=undef, usemultiplicity=undef
         useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
         use64bitint=undef, use64bitall=undef, uselongdouble=undef
         usemymalloc=n, bincompat5005=undef
       Compiler:
         cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing
    -pipe -fstack-protector -I/usr/local/include -I/opt/local/include',
         optimize='-O3',
         cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe
    -fstack-protector -I/usr/local/include -I/opt/local/include'
         ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
         intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
         d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
         ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
    lseeksize=8
         alignbytes=8, prototype=define
       Linker and Libraries:
         ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='
    -fstack-protector -L/usr/local/lib -L/opt/local/lib'
         libpth=/usr/local/lib /opt/local/lib /usr/lib
         libs=-ldbm -ldl -lm -lutil -lc
         perllibs=-ldl -lm -lutil -lc
         libc=, so=dylib, useshrplib=false, libperl=libperl.a
         gnulibc_version=''
       Dynamic Linking:
         dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
         cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup
    -L/usr/local/lib -L/opt/local/lib -fstack-protector'


    Characteristics of this binary (from libperl):
       Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
                             PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
                             PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
                             PERL_USE_DEVEL USE_LARGE_FILES USE_LOCALE
                             USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                             USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
       Built under darwin
       Compiled at Jun 23 2013 10:59:34
       @INC:
         lib
         /usr/local/lib/perl5/site_perl/5.19.2/darwin-2level
         /usr/local/lib/perl5/site_perl/5.19.2
         /usr/local/lib/perl5/5.19.2/darwin-2level
         /usr/local/lib/perl5/5.19.2
         /usr/local/lib/perl5/site_perl
         .
  • Peter Martini at Jun 23, 2013 at 8:55 pm

    On Sun, Jun 23, 2013 at 1:35 PM, Craig A. Berry wrote:
    On Sat, Jun 22, 2013 at 6:03 PM, James E Keenan wrote:
    On 6/22/13 5:32 PM, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 10:22:57PM +0100, Nicholas Clark wrote:
    Pushed as origin/smoke-me/nicholas/RT-118603
    t/op/stash.t PASS in this branch; now running full make test
    I get all tests passing for that branch with the following
    configuration on Darwin PPC:

    % ./perl -Ilib -V
    Summary of my perl5 (revision 5 version 19 subversion 2) configuration:
    Commit id: 13d58115f07b12133a2df2821b893f0fc20065d9
    Platform:
    osname=darwin, osvers=9.8.0, archname=darwin-2level
    uname='darwin brianor.local 9.8.0 darwin kernel version 9.8.0: wed
    jul 15 16:57:01 pdt 2009; root:xnu-1228.15.4~1release_ppc power
    macintosh '
    config_args='-Dusedevel -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
    Compiler:
    cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing
    -pipe -fstack-protector -I/usr/local/include -I/opt/local/include',
    optimize='-O3',
    cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe
    -fstack-protector -I/usr/local/include -I/opt/local/include'
    ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
    lseeksize=8
    alignbytes=8, prototype=define
    Linker and Libraries:
    ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='
    -fstack-protector -L/usr/local/lib -L/opt/local/lib'
    libpth=/usr/local/lib /opt/local/lib /usr/lib
    libs=-ldbm -ldl -lm -lutil -lc
    perllibs=-ldl -lm -lutil -lc
    libc=, so=dylib, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
    Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup
    -L/usr/local/lib -L/opt/local/lib -fstack-protector'


    Characteristics of this binary (from libperl):
    Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
    PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
    PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
    PERL_USE_DEVEL USE_LARGE_FILES USE_LOCALE
    USE_LOCALE_COLLATE USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
    Built under darwin
    Compiled at Jun 23 2013 10:59:34
    @INC:
    lib
    /usr/local/lib/perl5/site_perl/5.19.2/darwin-2level
    /usr/local/lib/perl5/site_perl/5.19.2
    /usr/local/lib/perl5/5.19.2/darwin-2level
    /usr/local/lib/perl5/5.19.2
    /usr/local/lib/perl5/site_perl
    .
    Also confirmed on my Solaris 10 / SPARC box,

    bash-3.2$ uname -a
    SunOS sunsmoke 5.10 Generic_147440-01 sun4v sparc SUNW,Sun-Fire-T1000
    bash-3.2$ ./perl -Ilib -V
    Summary of my perl5 (revision 5 version 19 subversion 2) configuration:
       Commit id: 13d58115f07b12133a2df2821b893f0fc20065d9
       Platform:
         osname=solaris, osvers=2.10, archname=sun4-solaris-thread-multi
         uname='sunos sunsmoke 5.10 generic_147440-01 sun4v sparc
    sunw,sun-fire-t1000 '
         config_args='-Duse64bitall -Dusethreads -Dusedevel -des'
         hint=previous, useposix=true, d_sigaction=define
         useithreads=define, usemultiplicity=define
         useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
         use64bitint=undef, use64bitall=undef, uselongdouble=undef
         usemymalloc=n, bincompat5005=undef
       Compiler:
         cc='cc', ccflags ='-D_REENTRANT -DDEBUGGING -fno-strict-aliasing
    -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
    -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV',
         optimize='-O -g',
         cppflags='-D_REENTRANT -DDEBUGGING -fno-strict-aliasing -pipe
    -D_REENTRANT -DDEBUGGING -fno-strict-aliasing -pipe
    -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV
    -D_REENTRANT -DDEBUGGING -fno-strict-aliasing -pipe
    -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV
    -DPERL_USE_SAFE_PUTENV'
         ccversion='', gccversion='3.4.3
    (csl-sol210-3_4-branch+sol_rpath)', gccosandvers='solaris2.10'
         intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
         d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
         ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
    lseeksize=8
         alignbytes=8, prototype=define
       Linker and Libraries:
         ld='cc', ldflags =' '
         libpth=/usr/lib /usr/ccs/lib
         libs=-lsocket -lnsl -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='-fPIC', lddlflags='-G'


    Characteristics of this binary (from libperl):
       Compile-time options: DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS
                             PERL_DONT_CREATE_GVSV
                             PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
                             PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
                             PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
                             PERL_TRACK_MEMPOOL PERL_USE_DEVEL
                             PERL_USE_SAFE_PUTENV USE_ITHREADS USE_LARGE_FILES
                             USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                             USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
                             USE_REENTRANT_API
       Built under solaris
       Compiled at Jun 23 2013 15:30:15
       @INC:
         lib
         /opt/lib/perl5/site_perl/5.19.2/sun4-solaris-thread-multi
         /opt/lib/perl5/site_perl/5.19.2
         /opt/lib/perl5/5.19.2/sun4-solaris-thread-multi
         /opt/lib/perl5/5.19.2
         /opt/lib/perl5/site_perl
         .

    Sorry I didn't build that box for testing earlier :-(
  • Father Chrysostomos via RT at Jun 22, 2013 at 11:24 pm

    On Sat Jun 22 14:33:02 2013, nicholas wrote:
    On Sat, Jun 22, 2013 at 10:22:57PM +0100, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 02:20:26PM -0700, Father Chrysostomos via RT
    wrote:
    On Sat Jun 22 13:10:53 2013, nicholas wrote:

    --- a/sv.h
    +++ b/sv.h
    @@ -531,7 +531,7 @@ struct xpvgv {
    union _xnvu xnv_u;
    };

    -typedef U16 cv_flags_t;
    +typedef U32 cv_flags_t;

    #define _XPVCV_COMMON \
    HV * xcv_stash; \
    Yes, that is it.
    I've bisected on a big endian linux machine I have access to, and
    that's it.
    Running tests on a fix...
    Try this:

    commit 13d58115f07b12133a2df2821b893f0fc20065d9
    Author: Nicholas Clark <[email protected]>
    Date: Sat Jun 22 14:25:26 2013 -0700

    Update B's size/offset for CvFLAGS to U32, following commit
    51c78f1b91bbcd7a.

    B.xs contains a table of offsets and sizes for members of the
    various SV
    structures. This needs updating as 51c78f1b91bbcd7a changed
    CvFLAGS from
    U16 to U32. This ommision won't be noticed on little endian
    platforms, but on
    big endian platforms B::CV::CvFLAGS will return 0 instead of the
    true value.

    diff --git a/ext/B/B.xs b/ext/B/B.xs
    index fdeca72..fbe6be6 100644
    --- a/ext/B/B.xs
    +++ b/ext/B/B.xs
    @@ -1328,7 +1328,7 @@ MODULE = B PACKAGE = B::IV
    #define PVCV_file_ix sv_char_pp | offsetof(struct xpvcv, xcv_file)
    #define PVCV_outside_ix sv_SVp | offsetof(struct xpvcv, xcv_outside)
    #define PVCV_outside_seq_ix sv_U32p | offsetof(struct xpvcv,
    xcv_outside_seq)
    -#define PVCV_flags_ix sv_U16p | offsetof(struct xpvcv, xcv_flags)
    +#define PVCV_flags_ix sv_U32p | offsetof(struct xpvcv, xcv_flags)

    #define PVHV_max_ix sv_STRLENp | offsetof(struct xpvhv, xhv_max)


    Pushed as origin/smoke-me/nicholas/RT-118603
    Wouldn’t a more robust approach like the attached be better? (I have
    not actually tested my patch.)

    --

    Father Chrysostomos


    ---
    via perlbug: queue: perl5 status: open
    https://rt.perl.org:443/rt3/Ticket/Display.html?id=118603
  • James E Keenan via RT at Jun 23, 2013 at 1:31 am

    On Sat Jun 22 16:24:09 2013, sprout wrote:
    On Sat Jun 22 14:33:02 2013, nicholas wrote:



    Pushed as origin/smoke-me/nicholas/RT-118603
    Wouldn’t a more robust approach like the attached be better? (I have
    not actually tested my patch.)
    Nicholas's smoke-me branch builds and tests successfully on Darwin/PPC,
    so it solves the problem originally posted in this RT.

    Father C, if you would like to test and smoke your patch, please do so.
      Since IANACP, I can't say which patch is better. But I do want blead
    to get back to PASS asap so that I can resume my normal work via this
    machine.

    Thank you very much.
    Jim Keenan


    ---
    via perlbug: queue: perl5 status: open
    https://rt.perl.org:443/rt3/Ticket/Display.html?id=118603
  • James E Keenan via RT at Jun 24, 2013 at 10:44 am

    On Sat Jun 22 18:30:50 2013, jkeenan wrote:
    On Sat Jun 22 16:24:09 2013, sprout wrote:
    On Sat Jun 22 14:33:02 2013, nicholas wrote:



    Pushed as origin/smoke-me/nicholas/RT-118603
    Wouldn’t a more robust approach like the attached be better? (I have
    not actually tested my patch.)
    Nicholas's smoke-me branch builds and tests successfully on Darwin/PPC,
    so it solves the problem originally posted in this RT.
    If there's no objection, I'd like to get this branch merged into blead
    today. Nicholas or anyone can do it, but if no one else does, I will do
    so this evening so that I can re-test, then close the ticket.

    Thank you very much.
    Jim Keenan

    ---
    via perlbug: queue: perl5 status: open
    https://rt.perl.org:443/rt3/Ticket/Display.html?id=118603
  • James E Keenan via RT at Jun 27, 2013 at 12:39 am

    On Mon Jun 24 03:44:30 2013, jkeenan wrote:
    On Sat Jun 22 18:30:50 2013, jkeenan wrote:

    Nicholas's smoke-me branch builds and tests successfully on Darwin/PPC,
    so it solves the problem originally posted in this RT.
    If there's no objection, I'd like to get this branch merged into blead
    today. Nicholas or anyone can do it, but if no one else does, I will do
    so this evening so that I can re-test, then close the ticket.
    The problems we were having in recent days with excessive warnings
    during 'make' have been solved by Karl's reversion of the problematic
    patches. So I can now clearly say that t/op/stash.t is PASSing all its
    tests on blead. So we can now resolve this ticket.

    Thanks to Nicholas and all you helped out.

    Thank you very much.
    Jim Keenan

    ---
    via perlbug: queue: perl5 status: open
    https://rt.perl.org:443/rt3/Ticket/Display.html?id=118603
  • Craig A. Berry at Jun 23, 2013 at 3:31 am

    On Sat, Jun 22, 2013 at 6:24 PM, Father Chrysostomos via RT wrote:
    On Sat Jun 22 14:33:02 2013, nicholas wrote:

    Pushed as origin/smoke-me/nicholas/RT-118603
    Wouldn’t a more robust approach like the attached be better? (I have
    not actually tested my patch.)
    The fact that it doesn't compile makes it a bit less robust, actually :-(.

    Read <http://gcc.gnu.org/onlinedocs/cpp/If.html#If>, notably the bit
    that says, "The preprocessor does not know anything about types in the
    language. Therefore, sizeof operators are not recognized in ‘#if’."

    And while defensive programming has its places, I'm not sure the size
    of cv_flags_t is going to be system-dependent (given the general
    obsolescence of <32-bit systems, or, in other words U32 being
    available always and everywhere) or would change with any frequency.
  • Peter Martini at Jun 22, 2013 at 11:03 pm

    On Sat, Jun 22, 2013 at 5:22 PM, Nicholas Clark wrote:
    On Sat, Jun 22, 2013 at 02:20:26PM -0700, Father Chrysostomos via RT wrote:
    On Sat Jun 22 13:10:53 2013, nicholas wrote:

    --- a/sv.h
    +++ b/sv.h
    @@ -531,7 +531,7 @@ struct xpvgv {
    union _xnvu xnv_u;
    };

    -typedef U16 cv_flags_t;
    +typedef U32 cv_flags_t;

    #define _XPVCV_COMMON \
    HV * xcv_stash; \
    Yes, that is it.
    I've bisected on a big endian linux machine I have access to, and that's it.
    Running tests on a fix...

    Nicholas Clark
    Ugh, doubly my fault, first for the patch, and second for not getting
    round to setting up the big-endian smoker - I have a Solaris 10 /
    new-ish SPARC box I bought for the task and hadn't set up yet. I'll
    start poking at that tonight (and if anyone can give me pointers, off
    list, I'd appreciate it).

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupperl5-porters @
categoriesperl
postedJun 22, '13 at 5:35p
activeJun 27, '13 at 12:39a
posts15
users5
websiteperl.org

People

Translate

site design / logo © 2023 Grokbase