Perl / perl5

đŸȘ The Perl programming language
https://dev.perl.org/perl5/
Other
1.91k stars 542 forks source link

t/op/stash.t: 3 new test failures on Darwin/PPC #13054

Closed p5pRT closed 11 years ago

p5pRT commented 11 years ago

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

Searchable as RT118603$

p5pRT commented 11 years ago

From @jkeenan

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 \sprout@​cpan\.org AuthorDate​: Fri Jun 14 00​:40​:23 2013 -0700 Commit​: Father Chrysostomos \sprout@​cpan\.org CommitDate​: Fri Jun 14 18​:13​:16 2013 -0700

t/op/stash.t PASS ##### commit b8a02ff16952a74a5f8d4679c7439a5c543a0fcf Author​: David Golden \dagolden@​cpan\.org AuthorDate​: Wed Jun 19 22​:28​:22 2013 -0400 Commit​: David Golden \dagolden@​cpan\.org 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   . #####

p5pRT commented 11 years ago

From @nwc10

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 \sprout@​cpan\.org AuthorDate​: Fri Jun 14 00​:40​:23 2013 -0700 Commit​: Father Chrysostomos \sprout@​cpan\.org CommitDate​: Fri Jun 14 18​:13​:16 2013 -0700

t/op/stash.t PASS ##### commit b8a02ff16952a74a5f8d4679c7439a5c543a0fcf Author​: David Golden \dagolden@​cpan\.org AuthorDate​: Wed Jun 19 22​:28​:22 2013 -0400 Commit​: David Golden \dagolden@​cpan\.org 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

p5pRT commented 11 years ago

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

p5pRT commented 11 years ago

From @nwc10

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 \PeterCMartini@​GMail\.com 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.

Inline Patch ```diff 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

p5pRT commented 11 years ago

From @cpansprout

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 \PeterCMartini@​GMail\.com 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

p5pRT commented 11 years ago

From @nwc10

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

p5pRT commented 11 years ago

From @nwc10

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 \nick@​ccl4\.org 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.

Inline Patch ```diff 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

p5pRT commented 11 years ago

From @jkeenan

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\nick@​ccl4\.org 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

p5pRT commented 11 years ago

From PeterCMartini@GMail.com

On Sat\, Jun 22\, 2013 at 5​:22 PM\, Nicholas Clark \nick@​ccl4\.org 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).

p5pRT commented 11 years ago

From @cpansprout

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 \nick@​ccl4\.org 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

p5pRT commented 11 years ago

From @cpansprout

Inline Patch ```diff diff --git a/ext/B/B.xs b/ext/B/B.xs index fdeca72..92606f9 100644 --- a/ext/B/B.xs +++ b/ext/B/B.xs @@ -1328,7 +1328,14 @@ 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) +#if sizeof(cv_flags_t) == sizeof(U16) +# define PVCV_flags_ix sv_U16p | offsetof(struct xpvcv, xcv_flags) +#elif sizeof(cv_flags_t) == sizeof(U32) +# define PVCV_flags_ix sv_U32p | offsetof(struct xpvcv, xcv_flags) +#else +# error Cannot handle cv_flags_t! What size is it? +#endif + #define PVHV_max_ix sv_STRLENp | offsetof(struct xpvhv, xhv_max) ```
p5pRT commented 11 years ago

From @jkeenan

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

p5pRT commented 11 years ago

From @craigberry

On Sat\, Jun 22\, 2013 at 6​:24 PM\, Father Chrysostomos via RT \perlbug\-followup@​perl\.org 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.

p5pRT commented 11 years ago

From @craigberry

On Sat\, Jun 22\, 2013 at 6​:03 PM\, James E Keenan \jkeen@&#8203;verizon\.net 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   .

p5pRT commented 11 years ago

From PeterCMartini@GMail.com

On Sun\, Jun 23\, 2013 at 1​:35 PM\, Craig A. Berry \craig\.a\.berry@&#8203;gmail\.com wrote​:

On Sat\, Jun 22\, 2013 at 6​:03 PM\, James E Keenan \jkeen@&#8203;verizon\.net 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 :-(

p5pRT commented 11 years ago

From @jkeenan

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

p5pRT commented 11 years ago

From @jkeenan

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

p5pRT commented 11 years ago

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