Perl / perl5

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

Blead Breaks CPAN: Role::Tiny, Variable::Magic, Moo #16191

Closed p5pRT closed 4 years ago

p5pRT commented 6 years ago

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

Searchable as RT132252$

p5pRT commented 6 years ago

From @simcop2387

Somewhere between e04fc1aa1c and e92359cbbc\, Role​::Tiny and Variable​::Magic were broken. I haven't bisected it myself yet but based on talk in #p5p from haarg I *suspect* that it's the stash changes in 1369fd508410a5ab354672cedce158f1e9c653c9

Reported by HAARG also\, Moo has failures of it's own with this change\, one of us will attach a log shortly.

--- BEGIN perl -V --- Summary of my perl5 (revision 5 version 27 subversion 5) configuration​:   Derived from​: e92359cbbca7d7280e849dbfc006bc0aeb44df67   Platform​:   osname=linux   osvers=4.9.36-x86_64-linode85   archname=x86_64-linux   uname='linux simcop2387.info 4.9.36-x86_64-linode85 #1 smp thu jul 6 15​:31​:23 utc 2017 x86_64 gnulinux '   config_args='-de -Dprefix=/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776 -Dccflags=-fpie -fPIC -march=native -fstack-protector-all -pie -D_FORTIFY_SOURCE=2 -Dldflags=-Wl\,-z\,now -Wl\,-zrelro -Dusedevel -Aeval​:scriptdir=/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776/bin'   hint=recommended   useposix=true   d_sigaction=define   useithreads=undef   usemultiplicity=undef   use64bitint=define   use64bitall=define   uselongdouble=undef   usemymalloc=n   default_inc_excludes_dot=define   bincompat5005=undef   Compiler​:   cc='cc'   ccflags ='-fpie -fPIC -march=native -fstack-protector-all -pie -D_FORTIFY_SOURCE=2 -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'   optimize='-O2'   cppflags='-fpie -fPIC -march=native -fstack-protector-all -pie -D_FORTIFY_SOURCE=2 -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'   ccversion=''   gccversion='7.2.0'   gccosandvers=''   intsize=4   longsize=8   ptrsize=8   doublesize=8   byteorder=12345678   doublekind=3   d_longlong=define   longlongsize=8   d_longdbl=define   longdblsize=16   longdblkind=3   ivtype='long'   ivsize=8   nvtype='double'   nvsize=8   Off_t='off_t'   lseeksize=8   alignbytes=8   prototype=define

  Linker and Libraries​:   ld='cc'   ldflags ='-Wl\,-z\,now -Wl\,-zrelro -fstack-protector-strong -L/usr/local/lib'   libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib   libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat   perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   libc=libc-2.24.so   so=so   useshrplib=false   libperl=libperl.a   gnulibc_version='2.24'   Dynamic Linking​:   dlsrc=dl_dlopen.xs   dlext=so   d_dlsymun=undef   ccdlflags='-Wl\,-E'   cccdlflags='-fPIC'   lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl)​:   Compile-time options​:   HAS_TIMES   PERLIO_LAYERS   PERL_COPY_ON_WRITE   PERL_DONT_CREATE_GVSV   PERL_MALLOC_WRAP   PERL_OP_PARENT   PERL_PRESERVE_IVUV   PERL_USE_DEVEL   USE_64_BIT_ALL   USE_64_BIT_INT   USE_LARGE_FILES   USE_LOCALE   USE_LOCALE_COLLATE   USE_LOCALE_CTYPE   USE_LOCALE_NUMERIC   USE_LOCALE_TIME   USE_PERLIO   USE_PERL_ATOF   Locally applied patches​:   uncommitted-changes   Devel​::PatchPerl 1.38   Built under linux   Compiled at Oct 9 2017 07​:03​:06   %ENV​:   PERLBREW_BASHRC_VERSION="0.78"   PERLBREW_HOME="/home/ryan/.perlbrew"

PERLBREW_MANPATH="/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776/man"

PERLBREW_PATH="/home/ryan/perl5/perlbrew/bin​:/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776/bin"   PERLBREW_PERL="perlbot-blead-2017-10-09_12776"   PERLBREW_ROOT="/home/ryan/perl5/perlbrew"   PERLBREW_VERSION="0.78"   @​INC​:

/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776/lib/site_perl/5.27.5/x86_64-linux

/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776/lib/site_perl/5.27.5

/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776/lib/5.27.5/x86_64-linux

/home/ryan/perl5/perlbrew/perls/perlbot-blead-2017-10-09_12776/lib/5.27.5 ----- END perl -V -----

p5pRT commented 6 years ago

From @simcop2387

role-tiny-build.log

p5pRT commented 6 years ago

From @simcop2387

variable-magic-build.log

p5pRT commented 6 years ago

From @cpansprout

On Mon\, 09 Oct 2017 08​:06​:46 -0700\, simcop2387@​simcop2387.info wrote​:

Somewhere between e04fc1aa1c and e92359cbbc\, Role​::Tiny and Variable​::Magic were broken. I haven't bisected it myself yet but based on talk in #p5p from haarg I *suspect* that it's the stash changes in 1369fd508410a5ab354672cedce158f1e9c653c9

Very likely. I was expecting some fallout.

Reported by HAARG also\, Moo has failures of it's own with this change\, one of us will attach a log shortly.

--

Father Chrysostomos

p5pRT commented 6 years ago

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

p5pRT commented 6 years ago

From @haarg

Some additional failures due to the same change.

p5pRT commented 6 years ago

From @haarg

Log-Trace.log

p5pRT commented 6 years ago

From @haarg

Moo.log

p5pRT commented 6 years ago

From @haarg

Test-API.log

p5pRT commented 6 years ago

From @haarg

Type-Tiny.log

p5pRT commented 6 years ago

From @haarg

indirect.log

p5pRT commented 6 years ago

From @simcop2387

Also breaks autovivification

On Tue\, Oct 10\, 2017 at 2​:16 AM\, Graham Knop via RT \< perlbug-followup@​perl.org> wrote​:

Some additional failures due to the same change.

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

p5pRT commented 6 years ago

From @simcop2387

autoviv.log

p5pRT commented 6 years ago

From @andk

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

  > Very likely. I was expecting some fallout.

What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout?

-- andreas

p5pRT commented 6 years ago

From @cpansprout

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

Very likely. I was expecting some fallout.

What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout?

I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28).

--

Father Chrysostomos

p5pRT commented 6 years ago

From @jkeenan

On Sun\, 15 Oct 2017 15​:17​:03 GMT\, sprout wrote​:

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

Very likely. I was expecting some fallout.

What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout?

I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28).

Father C\,

Can you describe the purpose of the branch you merged on Oct 08?

Given the fact that the libraries which we already know have been broken are rather high up on the CPAN river\, there is a greater than normal likelihood that libraries farther down the river and darkpan code will also break. If so\, then we need to assess the costs and benefits of the merge before proceeding.

Thank you very much.

-- James E Keenan (jkeenan@​cpan.org)

p5pRT commented 6 years ago

From @xsawyerx

On 10/15/2017 10​:07 PM\, James E Keenan via RT wrote​:

On Sun\, 15 Oct 2017 15​:17​:03 GMT\, sprout wrote​:

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​: Very likely. I was expecting some fallout. What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout? I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28). Father C\,

Can you describe the purpose of the branch you merged on Oct 08?

Given the fact that the libraries which we already know have been broken are rather high up on the CPAN river\, there is a greater than normal likelihood that libraries farther down the river and darkpan code will also break. If so\, then we need to assess the costs and benefits of the merge before proceeding.

An additional temporary problem is that this makes it difficult for CPAN smokers to expose problems with downstream modules. If Moo fails\, we can't test anything using Moo.

I think it's better to temporarily revert this just until we can resolve it.

Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.)

p5pRT commented 6 years ago

From @cpansprout

On Sun\, 15 Oct 2017 13​:07​:56 -0700\, jkeenan wrote​:

Father C\,

Can you describe the purpose of the branch you merged on Oct 08?

It saves a large amount of memory.

Before this change\, subroutines in packages (the most common use of package symbols) resided in typeglobs. So ‘package Foo; sub foo{}’ would be stored as *foo{CODE} in the *foo typeglob in the Foo package. I.e.\, $Foo​::{foo} was a typeglob with its CODE slot pointing to something.

The new behaviour is that\, instead of a typeglob\, we have a scalar with a reference to the subroutine. So now $Foo​::{foo} is a coderef.

Since an RV (a reference) takes 24 bytes of memory whereas a GV (typeglob) takes 24 (sv head) + 48 (xpvgv body) + 80 (gp) = 152 bytes\, plus a little malloc overhead for the gp struct\, which I think is 4 to 6 bytes on most platforms\, so the total is about 157 bytes.

That’s 133 bytes extra per subroutine. If you load five modules each with 100 subroutines\, you’ve just used 65 K more ram than you needed to.

(These are all 64-bit numbers. The 32-bit numbers differ\, but the GV will always be bigger than the RV.)

Granted\, method calls will undo the optimization (caching the method in the typeglob\, trading memory for speed)\, but this only happens if a particular method actually gets called. Hence\, small scripts that load large libraries will see the biggest reduction in memory usage. Large object-oriented systems that call methods for everything see the smallest reduction in memory usage.

Given the fact that the libraries which we already know have been broken are rather high up on the CPAN river\, there is a greater than normal likelihood that libraries farther down the river and darkpan code will also break. If so\, then we need to assess the costs and benefits of the merge before proceeding.

If we are to revert the behaviour\, it is only this hunk from 6881372e1 that needs to be reverted​:

@​@​ -8583\,7 +8590\,7 @​@​ Perl_newATTRSUB_x(pTHX_ I32 floor\, OP *o\, OP *proto\, OP *attrs\,   sub is stored in. */   const I32 flags =   ec ? GV_NOADD_NOINIT - : PL_curstash != CopSTASH(PL_curcop) + : IN_PERL_RUNTIME && PL_curstash != CopSTASH(PL_curcop)   || memchr(name\, '​:'\, namlen) || memchr(name\, '\''\, namlen)   ? gv_fetch_flags   : GV_ADDMULTI | GV_NOINIT | GV_NOTQUAL;

and whatever tests end up failing need to be marked TODO.

--

Father Chrysostomos

p5pRT commented 6 years ago

From @jkeenan

On Mon\, 16 Oct 2017 16​:16​:18 GMT\, xsawyerx@​gmail.com wrote​:

On 10/15/2017 10​:07 PM\, James E Keenan via RT wrote​:

On Sun\, 15 Oct 2017 15​:17​:03 GMT\, sprout wrote​:

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​: Very likely. I was expecting some fallout. What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout? I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28). Father C\,

Can you describe the purpose of the branch you merged on Oct 08?

Given the fact that the libraries which we already know have been broken are rather high up on the CPAN river\, there is a greater than normal likelihood that libraries farther down the river and darkpan code will also break. If so\, then we need to assess the costs and benefits of the merge before proceeding.

An additional temporary problem is that this makes it difficult for CPAN smokers to expose problems with downstream modules. If Moo fails\, we can't test anything using Moo.

I think it's better to temporarily revert this just until we can resolve it.

I also think that would be the best course of action. Father C could fork HEAD to a branch just before reverting. Ongoing work could then take place in that branch and\, at a suitable point\, we could install it somewhere for smoking the failing libraries and the upper parts of the CPAN river.

Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.)

Since this code had no FAILs within the CPAN test suite -- only downstream on CPAN. I think we need to look at the code on CPAN which broke to write tests which we can then include in the Perl 5 test suite to head off such failures in the future.

Thank you very much.

-- James E Keenan (jkeenan@​cpan.org)

p5pRT commented 6 years ago

From @shlomif

On Tue\, 17 Oct 2017 06​:55​:11 -0700 "James E Keenan via RT" \perlbug\-followup@&#8203;perl\.org wrote​:

On Mon\, 16 Oct 2017 16​:16​:18 GMT\, xsawyerx@​gmail.com wrote​:

On 10/15/2017 10​:07 PM\, James E Keenan via RT wrote​:

On Sun\, 15 Oct 2017 15​:17​:03 GMT\, sprout wrote​:

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:
Very likely. I was expecting some fallout.
What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout?
I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28).
Father C\,

Can you describe the purpose of the branch you merged on Oct 08?

Given the fact that the libraries which we already know have been broken are rather high up on the CPAN river\, there is a greater than normal likelihood that libraries farther down the river and darkpan code will also break. If so\, then we need to assess the costs and benefits of the merge before proceeding.

An additional temporary problem is that this makes it difficult for CPAN smokers to expose problems with downstream modules. If Moo fails\, we can't test anything using Moo.

I think it's better to temporarily revert this just until we can resolve it.

I also think that would be the best course of action. Father C could fork HEAD to a branch just before reverting. Ongoing work could then take place in that branch and\, at a suitable point\, we could install it somewhere for smoking the failing libraries and the upper parts of the CPAN river.

Sounds like a good course of action.

Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.)

Since this code had no FAILs within the CPAN test suite -- only downstream on CPAN. I think we need to look at the code on CPAN which broke to write tests which we can then include in the Perl 5 test suite to head off such failures in the future.

I also think this will be a good idea.

Thank you very much.

--


Shlomi Fish http​://www.shlomifish.org/ http​://youtu.be/xZLwtc9x4yA - Anime in Real Life!! (Parody)

Every successful open source project will eventually spawn a sub‐project.

Please reply to list if it's a mailing list post - http​://shlom.in/reply .

p5pRT commented 6 years ago

From @haarg

On Sun\, Oct 15\, 2017 at 5​:17 PM\, Father Chrysostomos via RT \perlbug\-followup@&#8203;perl\.org wrote​:

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

Very likely. I was expecting some fallout.

What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout?

I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28).

I have no particular opinion about if this patch should be backed out\, but I do have patches prepared for Role​::Tiny and Moo to deal with the issue.

--

Father Chrysostomos

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

p5pRT commented 6 years ago

From @cpansprout

On Tue\, 17 Oct 2017 15​:16​:46 -0700\, haarg wrote​:

On Sun\, Oct 15\, 2017 at 5​:17 PM\, Father Chrysostomos via RT \perlbug\-followup@&#8203;perl\.org wrote​:

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

Very likely. I was expecting some fallout.

What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout?

I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28).

I have no particular opinion about if this patch should be backed out\, but I do have patches prepared for Role​::Tiny and Moo to deal with the issue.

I have just submitted a patch for Variable​::Magic​: https://rt.cpan.org/Ticket/Display.html?id=123314

I am very short on time till the weekend. Would someone else have a chance to revert the hunk I cited?

--

Father Chrysostomos

p5pRT commented 6 years ago

From @xsawyerx

On 10/17/2017 03​:55 PM\, James E Keenan via RT wrote​:

On Mon\, 16 Oct 2017 16​:16​:18 GMT\, xsawyerx@​gmail.com wrote​:

[...] Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.) Since this code had no FAILs within the CPAN test suite -- only downstream on CPAN. I think we need to look at the code on CPAN which broke to write tests which we can then include in the Perl 5 test suite to head off such failures in the future.

I like this idea.

p5pRT commented 6 years ago

From @jkeenan

On 10/18/2017 05​:43 AM\, Sawyer X wrote​:

On 10/17/2017 03​:55 PM\, James E Keenan via RT wrote​:

On Mon\, 16 Oct 2017 16​:16​:18 GMT\, xsawyerx@​gmail.com wrote​:

[...] Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.) Since this code had no FAILs within the CPAN test suite -- only downstream on CPAN. I think we need to look at the code on CPAN which broke to write tests which we can then include in the Perl 5 test suite to head off such failures in the future.

I like this idea.

Sawyer\,

I think it will have to be your call to either (a) do the above\, which entails reverting merge commit 1369fd508410a5ab354672cedce158f1e9c653c9 from blead in its entirety (after copying HEAD to a branch); or (b) fixing only a small portion on that commit\, as indicated in Father C's most recent posts​:

https://www.nntp.perl.org/group/perl.perl5.porters/2017/10/msg246738.html https://www.nntp.perl.org/group/perl.perl5.porters/2017/10/msg246757.html

(a) has the disadvantage that it puts us into the murkiness described in file​:///usr/share/doc/git-doc/howto/revert-a-faulty-merge.html. (b) has the disadvantage that we have to trust the committer that all *other* parts of 1369fd5 are correct and that we only need to repair one line. I think it is unfortunate that we have been placed in this situation.

Thank you very much. Jim Keenan

p5pRT commented 6 years ago

From @jkeenan

On Wed\, 18 Oct 2017 03​:04​:52 GMT\, sprout wrote​:

On Tue\, 17 Oct 2017 15​:16​:46 -0700\, haarg wrote​:

On Sun\, Oct 15\, 2017 at 5​:17 PM\, Father Chrysostomos via RT \perlbug\-followup@&#8203;perl\.org wrote​:

On Sat\, 14 Oct 2017 23​:48​:08 -0700\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Mon\, 09 Oct 2017 17​:07​:34 -0700\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

Very likely. I was expecting some fallout.

What are the plans how to proceed? Shall this go into 5.27.5? I mean\, is everybody aware this is a huge fallout?

I am hoping\, when I get time on the weekends (like today)\, to start patching the CPAN modules one by one. We still have many months to go before the stable release.

But if the pumpking wants to back out the change for now\, I have no objection (except that it may make it harder to get the patches accepted--I really do want this change in before 5.28).

I have no particular opinion about if this patch should be backed out\, but I do have patches prepared for Role​::Tiny and Moo to deal with the issue.

I have just submitted a patch for Variable​::Magic​: https://rt.cpan.org/Ticket/Display.html?id=123314

I am very short on time till the weekend. Would someone else have a chance to revert the hunk I cited?

Father C made these commits​:

##### commit 6fbf0c3106e14fed2b6901c567fbb10716895f10 Author​: Father Chrysostomos \sprout@&#8203;cpan\.org

  Deparse.t tweak

commit 834e1dc686d615ac888f5ddc4c85c14addd6c2b5 Author​: Father Chrysostomos \sprout@&#8203;cpan\.org

  perldelta for 14062320f

commit 6eed25e2537643b77650cb3e4514ec9dc2e97d74 Author​: Father Chrysostomos \sprout@&#8203;cpan\.org

  Temporarily revert CV-in-stash optimisation #####

I installed blead for testing\, then installed cpanm. I then ran the following​:

##### ./bin/cpanm --verbose indirect autovivification Type​::Tiny Variable​::Magic Role​::Tiny Moo Log​::Trace Test​::API #####

All these modules installed with no test failures. But I think the ticket should stay open for a while to see if any other distros had the BBC.

Thank you very much.

-- James E Keenan (jkeenan@​cpan.org)

p5pRT commented 6 years ago

From @cpansprout

On Mon\, 16 Oct 2017 09​:16​:18 -0700\, xsawyerx@​gmail.com wrote​:

Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.)

Thank you. For starters\, I have just submitted a patch to fix Log​::Trace’s bug #49409​: https://rt.cpan.org/Ticket/Display.html?id=49409

Log​::Trace fails to handle the new optimization for the same reason that it has always failed with constants (see the ticket). The bug wrt constants was reported eight years ago\, and Log​::Trace last saw a new release twelve years ago. This is an unfortunate situation for a module depended on by so many things.

--

Father Chrysostomos

p5pRT commented 6 years ago

From @xsawyerx

On 10/18/2017 02​:13 PM\, James E Keenan wrote​:

On 10/18/2017 05​:43 AM\, Sawyer X wrote​:

On 10/17/2017 03​:55 PM\, James E Keenan via RT wrote​:

On Mon\, 16 Oct 2017 16​:16​:18 GMT\, xsawyerx@​gmail.com wrote​:

[...] Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.) Since this code had no FAILs within the CPAN test suite -- only downstream on CPAN.  I think we need to look at the code on CPAN which broke to write tests which we can then include in the Perl 5 test suite to head off such failures in the future.

I like this idea.

Sawyer\,

I think it will have to be your call to either (a) do the above\, which entails reverting merge commit 1369fd508410a5ab354672cedce158f1e9c653c9 from blead in its entirety (after copying HEAD to a branch); or (b) fixing only a small portion on that commit\, as indicated in Father C's most recent posts​:

https://www.nntp.perl.org/group/perl.perl5.porters/2017/10/msg246738.html https://www.nntp.perl.org/group/perl.perl5.porters/2017/10/msg246757.html

(a) has the disadvantage that it puts us into the murkiness described in file​:///usr/share/doc/git-doc/howto/revert-a-faulty-merge.html.  (b) has the disadvantage that we have to trust the committer that all *other* parts of 1369fd5 are correct and that we only need to repair one line. I think it is unfortunate that we have been placed in this situation.

I had asked to temporarily revert it.

p5pRT commented 6 years ago

From @cpansprout

On Thu\, 26 Oct 2017 08​:06​:54 -0700\, xsawyerx@​gmail.com wrote​:

On 10/18/2017 02​:13 PM\, James E Keenan wrote​:

On 10/18/2017 05​:43 AM\, Sawyer X wrote​:

On 10/17/2017 03​:55 PM\, James E Keenan via RT wrote​:

On Mon\, 16 Oct 2017 16​:16​:18 GMT\, xsawyerx@​gmail.com wrote​:

[...] Father C.\, if you can share your patch\, others could help with the patching. (I volunteer.)

All the modules listed in this ticket now have patches​:

Haarg says in https://rt-archive.perl.org/perl5/Ticket/Display.html?id=132252#txn-1500347 that he has prepared patches for Moo and Role​::Tiny.

Log​::Trace​: https://rt.cpan.org/Ticket/Display.html?id=49409

Variable​::Magic​: https://rt.cpan.org/Ticket/Display.html?id=123314

Test​::API​: https://github.com/dagolden/Test-API/pull/6

Type​::Tiny​: https://rt.cpan.org/Ticket/Display.html?id=123408

indirect​: https://rt.cpan.org/Ticket/Display.html?id=123374

autovivification​: https://rt.cpan.org/Ticket/Display.html?id=123411

Since this code had no FAILs within the CPAN test suite -- only downstream on CPAN.  I think we need to look at the code on CPAN which broke to write tests which we can then include in the Perl 5 test suite to head off such failures in the future.

I like this idea.

I this case it doesn’t really apply. In fact\, most of the modules are already buggy\, because they don’t take into account that\, since 5.6 or so\, stash elements have contained things other than typeglobs. In some instances I wrote new tests for the modules that got them to fail with existing perl versions. The fix to work with the optimisation in these cases was the same as the fix to work with constants in earlier perl versions.

Sawyer\,

I think it will have to be your call to either (a) do the above\, which entails reverting merge commit 1369fd508410a5ab354672cedce158f1e9c653c9 from blead in its entirety (after copying HEAD to a branch); or (b) fixing only a small portion on that commit\, as indicated in Father C's most recent posts​:

https://www.nntp.perl.org/group/perl.perl5.porters/2017/10/msg246738.html https://www.nntp.perl.org/group/perl.perl5.porters/2017/10/msg246757.html

(a) has the disadvantage that it puts us into the murkiness described in file​:///usr/share/doc/git-doc/howto/revert-a-faulty-merge.html.  (b) has the disadvantage that we have to trust the committer that all *other* parts of 1369fd5 are correct and that we only need to repair one line. I think it is unfortunate that we have been placed in this situation.

I had asked to temporarily revert it.

I reverted to the old behaviour in commit 6eed25e25 and have now pushed a new sprout/cv-in-stash branch\, based on current blead (6e8135a4380966)\, with the revert reverted.

At this point\, how do we proceed?

--

Father Chrysostomos

p5pRT commented 6 years ago

From @cpansprout

On Sun\, 29 Oct 2017 11​:40​:14 -0700\, sprout wrote​:

On Thu\, 26 Oct 2017 08​:06​:54 -0700\, xsawyerx@​gmail.com wrote​:

On 10/18/2017 02​:13 PM\, James E Keenan wrote​:

On 10/18/2017 05​:43 AM\, Sawyer X wrote​:

On 10/17/2017 03​:55 PM\, James E Keenan via RT wrote​:

Since this code had no FAILs within the CPAN test suite -- only downstream on CPAN.  I think we need to look at the code on CPAN which broke to write tests which we can then include in the Perl 5 test suite to head off such failures in the future.

I like this idea.

I this case it doesn’t really apply.

Except for Cpanel​::JSON​::XS\, which was failing with my patch because the core function get_cvn_flags was not coping with subrefs when called the way that module calls it. This I have fixed and tested in a385812b685.

--

Father Chrysostomos

p5pRT commented 6 years ago

From @dur-randir

2017-11-01 4​:00 GMT+03​:00 Father Chrysostomos via RT \perlbug\-followup@&#8203;perl\.org​:

This I have fixed and tested in a385812b685.

This commit introduced a new build warning\, as follows​:

perl.c​:2708​:9​: warning​: incompatible pointer types returning 'SV *' (aka 'struct sv *') from a function with result type 'CV *' (aka 'struct cv *')   [-Wincompatible-pointer-types]   return SvRV((SV *)gv);   ^~~~~~ ./sv.h​:1213​:2​: note​: expanded from macro 'SvRV'   (*({ SV *const _svrv = MUTABLE_SV(sv); \   ^~~~~~~~~~~~~~~~~ 1 warning generated.

Best regards\, Sergey Aleynikov

p5pRT commented 6 years ago

From @iabyn

On Wed\, Nov 01\, 2017 at 02​:28​:18AM -0700\, Sergey Aleynikov via RT wrote​:

This commit introduced a new build warning\, as follows​:

perl.c​:2708​:9​: warning​: incompatible pointer types returning 'SV *' (aka 'struct sv *') from a function with result type 'CV *' (aka 'struct cv *') [-Wincompatible-pointer-types] return SvRV((SV *)gv); ^~~~~~

Fixed with v5.27.5-172-ge05a85b

-- A problem shared is a problem doubled.

p5pRT commented 6 years ago

From @cpansprout

On Sun\, 29 Oct 2017 11​:40​:14 -0700\, sprout wrote​:

All the modules listed in this ticket now have patches​:

Haarg says in https://rt-archive.perl.org/perl5/Ticket/Display.html?id=132252#txn- 1500347 that he has prepared patches for Moo and Role​::Tiny.

Log​::Trace​: https://rt.cpan.org/Ticket/Display.html?id=49409

Variable​::Magic​: https://rt.cpan.org/Ticket/Display.html?id=123314

Test​::API​: https://github.com/dagolden/Test-API/pull/6

Type​::Tiny​: https://rt.cpan.org/Ticket/Display.html?id=123408

indirect​: https://rt.cpan.org/Ticket/Display.html?id=123374

autovivification​: https://rt.cpan.org/Ticket/Display.html?id=123411

Update​: Specio\, perl5i\, and Scope​::Upper are also affected.

The following releases have been made​:

VPIT/Scope-Upper-0.30.tar.gz VPIT/Variable-Magic-0.62.tar.gz VPIT/autovivification-0.18.tar.gz VPIT/indirect-0.38.tar.gz DROLSKY/Specio-0.42.tar.gz

So the current list is​:

Moo and Role​::Tiny\, which are patched in github. (A new release soon would be much appreciated\, since so much depends on those.)

Log​::Trace​: https://rt.cpan.org/Ticket/Display.html?id=49409

Test​::API​: https://github.com/dagolden/Test-API/pull/6

Type​::Tiny​: https://rt.cpan.org/Ticket/Display.html?id=123408

perl5i​: https://github.com/evalEmpire/perl5i/pull/299

The optimisation uncovered existing bugginess (inconsistent behaviour) in perl5i\, and the way in which it should be solved is still being discussed.

I reverted to the old behaviour in commit 6eed25e25 and have now pushed a new sprout/cv-in-stash branch\, based on current blead (6e8135a4380966)\, with the revert reverted.

At this point\, how do we proceed?

If I get no answer to this question\, I plan to revert the reversion shortly before the next developement release.

--

Father Chrysostomos

p5pRT commented 6 years ago

From @xsawyerx

On 11/05/2017 07​:57 PM\, Father Chrysostomos via RT wrote​:

On Sun\, 29 Oct 2017 11​:40​:14 -0700\, sprout wrote​:

All the modules listed in this ticket now have patches​:

Haarg says in https://rt-archive.perl.org/perl5/Ticket/Display.html?id=132252#txn- 1500347 that he has prepared patches for Moo and Role​::Tiny.

Log​::Trace​: https://rt.cpan.org/Ticket/Display.html?id=49409

Variable​::Magic​: https://rt.cpan.org/Ticket/Display.html?id=123314

Test​::API​: https://github.com/dagolden/Test-API/pull/6

Type​::Tiny​: https://rt.cpan.org/Ticket/Display.html?id=123408

indirect​: https://rt.cpan.org/Ticket/Display.html?id=123374

autovivification​: https://rt.cpan.org/Ticket/Display.html?id=123411 Update​: Specio\, perl5i\, and Scope​::Upper are also affected.

The following releases have been made​:

VPIT/Scope-Upper-0.30.tar.gz VPIT/Variable-Magic-0.62.tar.gz VPIT/autovivification-0.18.tar.gz VPIT/indirect-0.38.tar.gz DROLSKY/Specio-0.42.tar.gz

So the current list is​:

[...] Type​::Tiny​: https://rt.cpan.org/Ticket/Display.html?id=123408

Notified Inkster.

p5pRT commented 6 years ago

From @cpansprout

On Sun\, 05 Nov 2017 10​:57​:09 -0800\, sprout wrote​:

I plan to revert the reversion shortly before the next developement release.

I have now reverted it\, reinstating the optimisation\, in commit d96402565cc.

--

Father Chrysostomos

p5pRT commented 6 years ago

From @simcop2387

Just wanted to make a note that this does break the currently available version of Moo on CPAN still. Since a patch for it exists I hope it can be released soon to address the change.

On Sat\, Nov 11\, 2017 at 6​:48 AM\, Father Chrysostomos via RT \< perlbug-followup@​perl.org> wrote​:

On Sun\, 05 Nov 2017 10​:57​:09 -0800\, sprout wrote​:

I plan to revert the reversion shortly before the next developement release.

I have now reverted it\, reinstating the optimisation\, in commit d96402565cc.

--

Father Chrysostomos

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

p5pRT commented 6 years ago

From @andk

On Tue\, 14 Nov 2017 10​:31​:11 -0800\, Ryan Voots \simcop2387@&#8203;simcop2387\.info said​:

  > Just wanted to make a note that this does break the currently   > available version of Moo on CPAN still. Since a patch for it exists I   > hope it can be released soon to address the change.

Just a quick scan for some also affected distros​:

ALEXMV/Symbol-Global-Name-0.05.tar.gz BBC/Log-Trace-1.070.tar.gz BELDEN/Functional-Utility-1.02.tar.gz CHROMATIC/Devel-TraceMethods-1.00.tar.gz DAGOLDEN/Test-API-0.008.tar.gz DROLSKY/Test-Vars-0.014.tar.gz IBB/Class-Declare-Attributes-0.12.tar.gz INGY/Class-Spiffy-0.15.tar.gz JWILLIAMS/Class-Classless-C3-1.00.tar.gz NWELLNHOF/Clownfish-0.6.1.tar.gz RANDIR/namespace-clean-xs-0.07.tar.gz XAOC/Glib-1.326.tar.gz

This is really just a tiny fraction of my usually tested sample because I cannot test a lot due missing Moo.

Note​: the timing of the commit was unfortunate. Perl did not pass its own test suite at that time\, so I'm not able to bisect exactly\, so there is a small chance that the above fallout is not due to that commit. All passed with v5.27.5-312-ga337154664 but not with v5.27.5-335-gf63f40368c and v5.27.5-384-g1218f5ba79.

-- andreas

p5pRT commented 6 years ago

From @cpansprout

On Wed\, 15 Nov 2017 13​:11​:34 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

On Tue\, 14 Nov 2017 10​:31​:11 -0800\, Ryan Voots \simcop2387@&#8203;simcop2387\.info said​:

Just wanted to make a note that this does break the currently available version of Moo on CPAN still. Since a patch for it exists I hope it can be released soon to address the change.

Just a quick scan for some also affected distros​:

ALEXMV/Symbol-Global-Name-0.05.tar.gz BBC/Log-Trace-1.070.tar.gz BELDEN/Functional-Utility-1.02.tar.gz CHROMATIC/Devel-TraceMethods-1.00.tar.gz DAGOLDEN/Test-API-0.008.tar.gz DROLSKY/Test-Vars-0.014.tar.gz IBB/Class-Declare-Attributes-0.12.tar.gz INGY/Class-Spiffy-0.15.tar.gz JWILLIAMS/Class-Classless-C3-1.00.tar.gz NWELLNHOF/Clownfish-0.6.1.tar.gz RANDIR/namespace-clean-xs-0.07.tar.gz XAOC/Glib-1.326.tar.gz

I have submitted patches for Log​::Trace and Test​::API.

This is really just a tiny fraction of my usually tested sample because I cannot test a lot due missing Moo.

If you install Moo from the GitHub repository\, you can test other modules. (That is what I have been doing for the past couple of weeks now\, but I am testing them manually one by one\, so it is slow.)

--

Father Chrysostomos

p5pRT commented 6 years ago

From @andk

On Thu\, 16 Nov 2017 20​:28​:00 -0800\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

  > If you install Moo from the GitHub repository\, you can test other   > modules. (That is what I have been doing for the past couple of weeks   > now\, but I am testing them manually one by one\, so it is slow.)

Yes\, I know\, and I occasionally play this game too\, but there is also the need to keep the breakages that cpantesters deal with in sync with what the normal enduser is dealing with. If I apply all patches available\, I reflect some state that nobody else is facing.

I'd rather see patches kept back that break something that has thousands of dependencies until those known cases have fixed releases.

-- andreas

p5pRT commented 6 years ago

From @cpansprout

On Wed\, 15 Nov 2017 13​:11​:34 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

Just a quick scan for some also affected distros​:

ALEXMV/Symbol-Global-Name-0.05.tar.gz BBC/Log-Trace-1.070.tar.gz BELDEN/Functional-Utility-1.02.tar.gz CHROMATIC/Devel-TraceMethods-1.00.tar.gz DAGOLDEN/Test-API-0.008.tar.gz DROLSKY/Test-Vars-0.014.tar.gz IBB/Class-Declare-Attributes-0.12.tar.gz INGY/Class-Spiffy-0.15.tar.gz JWILLIAMS/Class-Classless-C3-1.00.tar.gz NWELLNHOF/Clownfish-0.6.1.tar.gz RANDIR/namespace-clean-xs-0.07.tar.gz XAOC/Glib-1.326.tar.gz

namespace​::clean​::xs has been released. Moo 2.003003 has been released.

I have yet to look at Glib. What makes it particularly difficult is that it is platform-specific.

Patches and bug reports​:

Log​::Trace patch​: https://rt.cpan.org/Ticket/Display.html?id=49409

Test​::API patch https://github.com/dagolden/Test-API/pull/6

Type​::Tiny patch​: https://rt.cpan.org/Ticket/Display.html?id=123408

perl5i patch​: https://github.com/evalEmpire/perl5i/pull/299

Symbol​::Global​::Name patch​: https://rt.cpan.org/Ticket/Display.html?id=123661

Test​::Resub patch​: https://github.com/belden/test-resub/pull/4

Functional​::Utility bug report (bundled module needs update)​: https://github.com/belden/perl-functional-utility/issues/2

Devel​::TraceMethods patch​: https://rt.cpan.org/Ticket/Display.html?id=123667

Test​::Vars patch​: https://github.com/houseabsolute/p5-Test-Vars/pull/34

Class​::Declare​::Attributes patch​: https://rt.cpan.org/Ticket/Display.html?id=123669

Class​::Classless​::C3 patch​: https://rt.cpan.org/Ticket/Display.html?id=123671

Class​::Spiffy bug report (bundled module needs update)​: https://rt.cpan.org/Ticket/Display.html?id=123675

Clownfish patch​: https://lists.apache.org/thread.html/748b9ddb8a4b7472f1c9b61e066262409683aa3ba991e02eff0a6cf3@%3Cdev.lucy.apache.org%3E

--

Father Chrysostomos

p5pRT commented 6 years ago

From @cpansprout

On Sun\, 19 Nov 2017 11​:52​:20 -0800\, sprout wrote​:

On Wed\, 15 Nov 2017 13​:11​:34 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

XAOC/Glib-1.326.tar.gz

I have yet to look at Glib. What makes it particularly difficult is that it is platform-specific.

Andreas\, can you show me what a failure looks like? Currently CPAN testers is not working properly.

--

Father Chrysostomos

p5pRT commented 6 years ago

From @xsawyerx

On 11/19/2017 08​:52 PM\, Father Chrysostomos via RT wrote​:

On Wed\, 15 Nov 2017 13​:11​:34 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

Just a quick scan for some also affected distros​:

ALEXMV/Symbol-Global-Name-0.05.tar.gz BBC/Log-Trace-1.070.tar.gz BELDEN/Functional-Utility-1.02.tar.gz CHROMATIC/Devel-TraceMethods-1.00.tar.gz DAGOLDEN/Test-API-0.008.tar.gz DROLSKY/Test-Vars-0.014.tar.gz IBB/Class-Declare-Attributes-0.12.tar.gz INGY/Class-Spiffy-0.15.tar.gz JWILLIAMS/Class-Classless-C3-1.00.tar.gz NWELLNHOF/Clownfish-0.6.1.tar.gz RANDIR/namespace-clean-xs-0.07.tar.gz XAOC/Glib-1.326.tar.gz namespace​::clean​::xs has been released. Moo 2.003003 has been released.

I have yet to look at Glib. What makes it particularly difficult is that it is platform-specific.

Patches and bug reports​:

[...]

Type​::Tiny patch​: https://rt.cpan.org/Ticket/Display.html?id=123408

This is likely to be the most disruptive. It's high up the CPAN river.

p5pRT commented 6 years ago

From @andk

On Sun\, 19 Nov 2017 12​:09​:40 -0800\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

  > On Sun\, 19 Nov 2017 11​:52​:20 -0800\, sprout wrote​:

On Wed\, 15 Nov 2017 13​:11​:34 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

XAOC/Glib-1.326.tar.gz

I have yet to look at Glib. What makes it particularly difficult is that it is platform-specific.

  > Andreas\, can you show me what a failure looks like? Currently CPAN   > testers is not working properly.

One report follows.


PROGRAM OUTPUT


Output from '/usr/bin/make test'​:

"/home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a/bin/perl" -MExtUtils​::Command​::MM -e 'cp_nonempty' -- Glib.bs blib/arch/auto/Glib/Glib.bs 644 PERL_DL_NONLAZY=1 "/home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a/bin/perl" "-MExtUtils​::Command​::MM" "-MTest​::Harness" "-e" "undef *Test​::Harness​::Switches; test_harness(0\, 'blib/lib'\, 'blib/arch')" t/*.t t/1.t ...................... ok t/2.t ...................... ok t/3.t ...................... ok t/4.t ...................... ok Argument "xyz" isn't numeric in numeric eq (==) at t/5.t line 66. t/5.t ...................... Failed 4/10 subtests Use of uninitialized value in string eq at t/6.t line 118. Use of uninitialized value in string eq at t/6.t line 119. Use of uninitialized value in string eq at t/6.t line 120. Use of uninitialized value in string eq at t/6.t line 121. Use of uninitialized value in string eq at t/6.t line 123. Use of uninitialized value in string eq at t/6.t line 124. Use of uninitialized value in string eq at t/6.t line 126. Use of uninitialized value in string eq at t/6.t line 128. t/6.t ...................... Failed 23/31 subtests t/64bit.t .................. ok t/7.t ...................... ok t/8.t ...................... ok t/9.t ...................... ok t/a.t ...................... ok

# Failed test '$obj->{some_string} empty' # at t/b.t line 69. # got​: undef # expected​: 'one'

# Failed test '$obj->{read_string} empty' # at t/b.t line 70. # got​: undef # expected​: 'two'

# Failed test '$obj->{read_string} empty' # at t/b.t line 78. # got​: '44' # expected​: 'two' # Looks like you failed 3 tests of 8. t/b.t ...................... Dubious\, test returned 3 (wstat 768\, 0x300) Failed 3/8 subtests t/boxed_errors.t ........... ok t/bytes.t .................. ok

# Failed test 'flags property' # at t/c.t line 226. # Structures begin differing at​: # $got->[1] = 'value-five' # $expected->[1] = Does not exist

# Failed test 'flags property' # at t/c.t line 227. # Structures begin differing at​: # $got->[1] = 'value-five' # $expected->[1] = Does not exist # Looks like you failed 2 tests of 57. t/c.t ...................... Dubious\, test returned 2 (wstat 512\, 0x200) Failed 2/57 subtests t/constants.t .............. ok t/d.t ...................... ok t/e.t ...................... ok t/f.t ...................... ok t/filename.t ............... ok t/g.t ...................... ok t/h.t ...................... ok t/lazy_loader.t ............ ok t/make_helper.t ............ ok t/module_versions.t ........ skipped​: Test​::ConsistentVersion required for checking module versions t/options.t ................ ok t/signal_emission_hooks.t .. ok t/signal_marshal.t ......... ok t/signal_query.t ........... ok t/tied_definedness.t ....... ok t/tied_flags.t ............. ok

# Failed test 'MaiTai tied store function called' # at t/tied_set_property.t line 55. # got​: '0' # expected​: '1' # Looks like you failed 1 test of 1. t/tied_set_property.t ...... Dubious\, test returned 1 (wstat 256\, 0x100) Failed 1/1 subtests t/variant.t ................ ok

Test Summary Report


t/5.t (Wstat​: 0 Tests​: 8 Failed​: 2)   Failed tests​: 4\, 8   Parse errors​: Tests out of sequence. Found (3) but expected (2)   Tests out of sequence. Found (4) but expected (3)   Tests out of sequence. Found (5) but expected (4)   Tests out of sequence. Found (6) but expected (5)   Tests out of sequence. Found (7) but expected (6) Displayed the first 5 of 8 TAP syntax errors. Re-run prove with the -p option to see them all. t/6.t (Wstat​: 0 Tests​: 16 Failed​: 8)   Failed tests​: 16-23   Parse errors​: Tests out of sequence. Found (16) but expected (1)   Tests out of sequence. Found (17) but expected (2)   Tests out of sequence. Found (18) but expected (3)   Tests out of sequence. Found (19) but expected (4)   Tests out of sequence. Found (20) but expected (5) Displayed the first 5 of 17 TAP syntax errors. Re-run prove with the -p option to see them all. t/b.t (Wstat​: 768 Tests​: 8 Failed​: 3)   Failed tests​: 3-4\, 7   Non-zero exit status​: 3 t/c.t (Wstat​: 512 Tests​: 57 Failed​: 2)   Failed tests​: 42-43   Non-zero exit status​: 2 t/tied_set_property.t (Wstat​: 256 Tests​: 1 Failed​: 1)   Failed test​: 1   Non-zero exit status​: 1 Files=33\, Tests=1160\, 14 wallclock secs ( 0.16 usr 0.19 sys + 2.32 cusr 0.67 csys = 3.34 CPU) Result​: FAIL Failed 5/33 test programs. 16/1160 subtests failed. Makefile​:1375​: recipe for target 'test_dynamic' failed make​: *** [test_dynamic] Error 255


PREREQUISITES


Prerequisite modules loaded​:

requires​:

  Module Need Have   ------------------- ----- -----   ExtUtils​::Depends 0.300 0.405   ExtUtils​::PkgConfig 1.000 1.16

build_requires​:

  Module Need Have   ------------------- ----- -----   ExtUtils​::MakeMaker 0 7.30

configure_requires​:

  Module Need Have   ------------------- ----- -----   ExtUtils​::Depends 0.300 0.405   ExtUtils​::MakeMaker 0 7.30   ExtUtils​::PkgConfig 1.000 1.16


ENVIRONMENT AND OTHER CONTEXT


Environment variables​:

  AUTOMATED_TESTING = 1   LANG = en_US.UTF-8   PATH = /home/sand/bin​:/usr/local/bin​:/usr/bin​:/bin​:/usr/games​:/usr/local/perl/bin​:/usr/X11/bin​:/sbin​:/usr/sbin   PERL5LIB =   PERL5OPT =   PERL5_CPANPLUS_IS_RUNNING = 18810   PERL5_CPAN_IS_RUNNING = 18810   PERL_CANARY_STABILITY_NOPROMPT = 1   PERL_MM_USE_DEFAULT = 1   PERL_USE_UNSAFE_INC = 1   SHELL = /usr/bin/zsh   TERM = screen

Perl special variables (and OS-specific diagnostics\, for MSWin32)​:

  $^X = /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a/bin/perl   $UID/$EUID = 1005 / 1005   $GID = 1005 1005   $EGID = 1005 1005

Perl module toolchain versions installed​:

  Module Have
  ------------------- --------   CPAN 2.19
  CPAN​::Meta 2.150010   Cwd 3.70
  ExtUtils​::CBuilder 0.280229   ExtUtils​::Command 7.30
  ExtUtils​::Install 2.14
  ExtUtils​::MakeMaker 7.30
  ExtUtils​::Manifest 1.70
  ExtUtils​::ParseXS 3.36
  File​::Spec 3.69
  JSON 2.94
  JSON​::PP 2.94
  Module​::Build 0.4224
  Module​::Signature 0.81
  Parse​::CPAN​::Meta 2.150010   Test​::Harness 3.39
  Test​::More 1.302106   YAML 1.24
  YAML​::Syck 1.30
  version 0.9918

--

Summary of my perl5 (revision 5 version 27 subversion 6) configuration​:   Commit id​: 1218f5ba79acb362f5b62f3f11ce1822d6599bf5   Platform​:   osname=linux   osvers=4.12.0-2-amd64   archname=x86_64-linux-thread-multi   uname='linux k93msid 4.12.0-2-amd64 #1 smp debian 4.12.13-1 (2017-09-19) x86_64 gnulinux '   config_args='-Dprefix=/home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a -Dmyhostname=k93msid -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Dlibswanted=cl pthread socket inet nsl gdbm dbm malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat -Duseithreads -Uuselongdouble -DEBUGGING=none'   hint=recommended   useposix=true   d_sigaction=define   useithreads=define   usemultiplicity=define   use64bitint=define   use64bitall=define   uselongdouble=undef   usemymalloc=n   default_inc_excludes_dot=define   bincompat5005=undef   Compiler​:   cc='cc'   ccflags ='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'   optimize='-O2'   cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'   ccversion=''   gccversion='7.2.0'   gccosandvers=''   intsize=4   longsize=8   ptrsize=8   doublesize=8   byteorder=12345678   doublekind=3   d_longlong=define   longlongsize=8   d_longdbl=define   longdblsize=16   longdblkind=3   ivtype='long'   ivsize=8   nvtype='double'   nvsize=8   Off_t='off_t'   lseeksize=8   alignbytes=8   prototype=define   Linker and Libraries​:   ld='cc'   ldflags =' -fstack-protector-strong -L/usr/local/lib'   libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib   libs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   libc=libc-2.24.so   so=so   useshrplib=false   libperl=libperl.a   gnulibc_version='2.24'   Dynamic Linking​:   dlsrc=dl_dlopen.xs   dlext=so   d_dlsymun=undef   ccdlflags='-Wl\,-E'   cccdlflags='-fPIC'   lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl)​:   Compile-time options​:   HAS_TIMES   MULTIPLICITY   PERLIO_LAYERS   PERL_COPY_ON_WRITE   PERL_DONT_CREATE_GVSV   PERL_IMPLICIT_CONTEXT   PERL_MALLOC_WRAP   PERL_OP_PARENT   PERL_PRESERVE_IVUV   PERL_USE_DEVEL   USE_64_BIT_ALL   USE_64_BIT_INT   USE_ITHREADS   USE_LARGE_FILES   USE_LOCALE   USE_LOCALE_COLLATE   USE_LOCALE_CTYPE   USE_LOCALE_NUMERIC   USE_LOCALE_TIME   USE_PERLIO   USE_PERL_ATOF   USE_REENTRANT_API   Built under linux   Compiled at Nov 15 2017 18​:17​:59   %ENV​:   PERL5LIB=""   PERL5OPT=""   PERL5_CPANPLUS_IS_RUNNING="18810"   PERL5_CPAN_IS_RUNNING="18810"   PERL_CANARY_STABILITY_NOPROMPT="1"   PERL_MM_USE_DEFAULT="1"   PERL_USE_UNSAFE_INC="1"   @​INC​:   /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a/lib/site_perl/5.27.6/x86_64-linux-thread-multi   /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a/lib/site_perl/5.27.6   /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a/lib/5.27.6/x86_64-linux-thread-multi   /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.27.5-384-g1218f5ba79/419a/lib/5.27.6   .

-- andreas

p5pRT commented 6 years ago

From @jkeenan

On 11/19/2017 03​:09 PM\, Father Chrysostomos via RT wrote​:

On Sun\, 19 Nov 2017 11​:52​:20 -0800\, sprout wrote​:

On Wed\, 15 Nov 2017 13​:11​:34 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

XAOC/Glib-1.326.tar.gz

I have yet to look at Glib. What makes it particularly difficult is that it is platform-specific.

Andreas\, can you show me what a failure looks like? Currently CPAN testers is not working properly.

I think the failures in Glib should be treated separately from the other failures discussed in this ticket.

Since the p5h hackathon last month\, I have been working on various "blead-breaks-CPAN" testing rigs. Glib has consistently failed -- but the failures I've recorded so far have been failures in prerequisites\, rather than failures in Glib itself (which I've never gotten to).

More specifically\, ...

Today I got this in a cpanm build.log on Debian Linux​:

##### $ export PERL_CPANM_HOME=/home/jkeenan/var/bbc/testing/.cpanm && ./bin/cpanm --mirror=/home/jkeenan/minicpan Glib --> Working on Glib Fetching file​:///home/jkeenan/minicpan/authors/id/X/XA/XAOC/Glib-1.326.tar.gz ... OK ==> Found dependencies​: ExtUtils​::PkgConfig --> Working on ExtUtils​::PkgConfig Fetching file​:///home/jkeenan/minicpan/authors/id/X/XA/XAOC/ExtUtils-PkgConfig-1.16.tar.gz ... OK Configuring ExtUtils-PkgConfig-1.16 ... N/A ! Configure failed for ExtUtils-PkgConfig-1.16. See /home/jkeenan/var/bbc/testing/.cpanm/work/1511136217.20834/build.log for details. ! Installing the dependencies failed​: Module 'ExtUtils​::PkgConfig' is not installed ! Bailing out the installation for Glib-1.326. #####

Whenever I see ...

##### ! Configure failed for [Some-Distro-N.NN] #####

... in a build.log\, I next expect to see that the distro depended on some outside library. In this case\, Glib has a dependency on ExtUtils​::PkgConfig\, which in turn has an external dependency. Switching into the directory for that library​:

##### $ /home/jkeenan/var/bbc/testing/bin/perl -I/home/jkeenan/var/bbc/testing/lib Makefile.PL *** *** ExtUtils​::PkgConfig requires the pkg-config utility\, but it doesn't *** seem to be in your PATH. Is it correctly installed? *** PATH=[snip] *** $ which pkg-config $ #####

Now\, there are *hundreds* of CPAN distros that fail during automatic testing for lack of an external dependency\, and I'm not about to go installing packages to satisfy those dependencies on a machine that I use for multiple purposes.

So\, assuming that others can confirm my findings\, I don't think Glib should be treated as a barrier to resolving this ticket.

Thank you very much. Jim Keenan

p5pRT commented 6 years ago

From @cpansprout

On Sun\, 19 Nov 2017 13​:03​:50 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

One report follows.

Thank you. I can’t see any red flags anywhere in Glib’s code that would link the failures to this optimisation. Do you still get failures if you revert d96402565ccd7459d3a8b?

--

Father Chrysostomos

p5pRT commented 6 years ago

From @andk

On Sun\, 19 Nov 2017 18​:14​:29 -0800\, "Father Chrysostomos via RT" \perlbug\-followup@&#8203;perl\.org said​:

  > On Sun\, 19 Nov 2017 13​:03​:50 -0800\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

One report follows.

  > Thank you. I can’t see any red flags anywhere in Glib’s code that   > would link the failures to this optimisation. Do you still get   > failures if you revert d96402565ccd7459d3a8b?

No. With d96402565 reverted I get no failures. I tried the revert on top of v5.27.5-430-ge94f172c38 which has the failures.

-- andreas

p5pRT commented 6 years ago

From @andk

Slaven has just started to smoke 5.27.6 and we have four more for now​:

STEVAN/MOP-0.12.tar.gz GUGOD/App-perlbrew-0.80.tar.gz JSWARTZ/Mason-Tidy-2.57.tar.gz MADSKILL/QBit-WebInterface-0.030.tar.gz

-- andreas

p5pRT commented 6 years ago

From @jkeenan

On Tue\, 21 Nov 2017 21​:37​:38 GMT\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

Slaven has just started to smoke 5.27.6 and we have four more for now​:

STEVAN/MOP-0.12.tar.gz GUGOD/App-perlbrew-0.80.tar.gz JSWARTZ/Mason-Tidy-2.57.tar.gz MADSKILL/QBit-WebInterface-0.030.tar.gz

Slaven\, Andreas​: Are these failures due to the same commit being discussed in this ticket?

If they are due to different changes which just appeared in 5.27.6\, I would recommend separate tickets. (This ticket is getting very long as it is.)

Thank you very much.

-- James E Keenan (jkeenan@​cpan.org)

p5pRT commented 6 years ago

From @andk

On Tue\, 21 Nov 2017 15​:20​:20 -0800\, "James E Keenan via RT" \perlbug\-followup@&#8203;perl\.org said​:

  > On Tue\, 21 Nov 2017 21​:37​:38 GMT\, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

Slaven has just started to smoke 5.27.6 and we have four more for now​:

STEVAN/MOP-0.12.tar.gz GUGOD/App-perlbrew-0.80.tar.gz JSWARTZ/Mason-Tidy-2.57.tar.gz MADSKILL/QBit-WebInterface-0.030.tar.gz

  > Slaven\, Andreas​: Are these failures due to the same commit being discussed in this ticket?

Very likely\, yes.

  > If they are due to different changes which just appeared in 5.27.6\, I   > would recommend separate tickets. (This ticket is getting very long as   > it is.)

It's a slippery slope​: is a change that gets reverted and then the revert gets reverted still the same change? For me it is. So these breakages are about the same change. You could argue it isn't the same change and then you would prefer a second ticket. Feel free to do how you think it is right. But everybody who get pulled into this change will have a hard time to understand\, no matter into how many tickets you split it.

It's getting even more slippery. When now the first packages broken by this change get released with a fix\, we will get more and more packages broken by this very same change because they are currently shadowed (i.e. untestable).

-- andreas

p5pRT commented 6 years ago

From @tonycoz

On Tue\, 21 Nov 2017 22​:57​:18 -0800\, > It's getting even more slippery. When now the first packages broken by

this change get released with a fix\, we will get more and more packages broken by this very same change because they are currently shadowed (i.e. untestable).

I haven't looked at the patch\, but from looking at the upstream changes the patch seems buggy to me.

*foo at the perl level should always behave like a glob - if it didn't before then that was a bug.

Making it behave like not-a-glob even more is just making that bug worse.

Tony

p5pRT commented 6 years ago

From @cpansprout

On Wed\, 22 Nov 2017 13​:39​:45 -0800\, tonyc wrote​:

On Tue\, 21 Nov 2017 22​:57​:18 -0800\, > It's getting even more slippery. When now the first packages broken by

this change get released with a fix\, we will get more and more packages broken by this very same change because they are currently shadowed (i.e. untestable).

I haven't looked at the patch\, but from looking at the upstream changes the patch seems buggy to me.

Would you please clarify which changes you are referring to.

*foo at the perl level should always behave like a glob - if it didn't before then that was a bug.

Making it behave like not-a-glob even more is just making that bug worse.

As far as I know\, *foo always behaves like a glob\, unless you do something BEGIN{$​::{foo} = *STDOUT{IO}}\, in which case you deservedly get an error.

However\, since perl 5.6 or so\, *$stash_entry{CODE} has not worked reliably. You may get a strict-refs error\, or\, as of perl 5.10\, you may get ‘Not a GLOB’ reference.

--

Father Chrysostomos