Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bleadperl v5.31.1-59-g6eebe43d5f breaks GUGOD/invoker-0.35.tar.gz #17113

Closed
p5pRT opened this issue Jul 26, 2019 · 6 comments
Closed

Bleadperl v5.31.1-59-g6eebe43d5f breaks GUGOD/invoker-0.35.tar.gz #17113

p5pRT opened this issue Jul 26, 2019 · 6 comments
Labels
BBC Blead Breaks CPAN - changes in blead broke a cpan module(s) distro-All
Milestone

Comments

@p5pRT
Copy link

p5pRT commented Jul 26, 2019

Migrated from rt.perl.org#134316 (status was 'pending release')

Searchable as RT134316$

@p5pRT
Copy link
Author

p5pRT commented Jul 26, 2019

From @andk

6eebe43 is the first bad commit
commit 6eebe43
Author​: David Mitchell <davem@​iabyn.com>
Date​: Tue May 14 16​:47​:06 2019 +0100

  S_optimize_op()​: remove anti-recursion deferring

Xref​: https://rt.cpan.org/Ticket/Display.html?id=130167

Sample fail report​:http​://www.cpantesters.org/cpan/report/4233a800-9930-11e9-be61-77a676735216

Enjoy,
--
andreas
PS​: perl programming language

@p5pRT
Copy link
Author

p5pRT commented Aug 5, 2019

From @iabyn

On Thu, Jul 25, 2019 at 10​:51​:34PM -0700, (Andreas J. Koenig) (via RT) wrote​:

commit 6eebe43
Author​: David Mitchell <davem@​iabyn.com>
Date​: Tue May 14 16​:47​:06 2019 +0100

S\_optimize\_op\(\)&#8203;: remove anti\-recursion deferring

Xref​: https://rt.cpan.org/Ticket/Display.html?id=130167

Sample fail report​:http​://www.cpantesters.org/cpan/report/4233a800-9930-11e9-be61-77a676735216

invoker wasn't correctly setting OP_PARENT when slicing in a new op.

The diff below fixes it, at least for blead - haven't tested with older
perls, especially pre-5.26.

Can't update the rt.cpan ticket at the momement as I have forgotten my
account details, and am not physically located where I have them written
down.

Inline Patch
--- invoker.xs-	2019-08-05 14:21:57.499383885 +0100
+++ invoker.xs	2019-08-05 14:28:05.560706198 +0100
@@ -63,11 +63,17 @@
                 gv = gv_fetchpvn_flags("self", 4, GV_NOINIT, SVt_PV);
                 if (SvOK(gv) && SvTYPE(gv) == SVt_PVGV) {
                     // "$self" was defined as a package variable -- use it
-                    cUNOPx(arg)->op_first = newGVOP(
+                    OP *new_gvop = newGVOP(
                         gvop->op_type,
                         gvop->op_flags,
                         gv
                     );
+#if PERL_REVISION == 5 && PERL_VERSION >= 26
+                    op_sibling_splice(arg, NULL, 1, new_gvop);
+#else
+                    cUNOPx(arg)->op_first = new_gvop;
+#endif
+                    op_free(gvop);
                 }
                 else {
                     croak("$self not found");
-- 
You're only as old as you look.

@p5pRT
Copy link
Author

p5pRT commented Aug 5, 2019

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

@p5pRT
Copy link
Author

p5pRT commented Aug 5, 2019

From @Tux

On Mon, 5 Aug 2019 14​:34​:45 +0100, Dave Mitchell <davem@​iabyn.com>
wrote​:

On Thu, Jul 25, 2019 at 10​:51​:34PM -0700, (Andreas J. Koenig) (via
RT) wrote​:

commit 6eebe43
Author​: David Mitchell <davem@​iabyn.com>
Date​: Tue May 14 16​:47​:06 2019 +0100

S\_optimize\_op\(\)&#8203;: remove anti\-recursion deferring

Xref​: https://rt.cpan.org/Ticket/Display.html?id=130167

Sample fail
report​:http​://www.cpantesters.org/cpan/report/4233a800-9930-11e9-be61-77a676735216

invoker wasn't correctly setting OP_PARENT when slicing in a new op.

The diff below fixes it, at least for blead - haven't tested with
older perls, especially pre-5.26.

Can't update the rt.cpan ticket at the momement as I have forgotten my
account details, and am not physically located where I have them
written down.

--- invoker.xs- 2019-08-05 14​:21​:57.499383885 +0100
+++ invoker.xs 2019-08-05 14​:28​:05.560706198 +0100
@​@​ -63,11 +63,17 @​@​
gv = gv_fetchpvn_flags("self", 4, GV_NOINIT, SVt_PV);
if (SvOK(gv) && SvTYPE(gv) == SVt_PVGV) {
// "$self" was defined as a package variable -- use it

/me spots C++ comments ^^

- cUNOPx(arg)->op_first = newGVOP(
+ OP *new_gvop = newGVOP(
gvop->op_type,
gvop->op_flags,
gv
);
+#if PERL_REVISION == 5 && PERL_VERSION >= 26
+ op_sibling_splice(arg, NULL, 1, new_gvop);
+#else
+ cUNOPx(arg)->op_first = new_gvop;
+#endif
+ op_free(gvop);
}
else {
croak("$self not found");

--
H.Merijn Brand http​://tux.nl Perl Monger http​://amsterdam.pm.org/
using perl5.00307 .. 5.31 porting perl5 on HP-UX, AIX, and Linux
https​://useplaintext.email https://tux.nl  http​://www.test-smoke.org
http​://qa.perl.org http​://www.goldmark.org/jeff/stupid-disclaimers/

@p5pRT
Copy link
Author

p5pRT commented Aug 5, 2019

From @jkeenan

On Mon, 05 Aug 2019 14​:48​:56 GMT, hmbrand wrote​:

On Mon, 5 Aug 2019 14​:34​:45 +0100, Dave Mitchell <davem@​iabyn.com>
wrote​:

On Thu, Jul 25, 2019 at 10​:51​:34PM -0700, (Andreas J. Koenig) (via
RT) wrote​:

commit 6eebe43
Author​: David Mitchell <davem@​iabyn.com>
Date​: Tue May 14 16​:47​:06 2019 +0100

S_optimize_op()​: remove anti-recursion deferring

Xref​: https://rt.cpan.org/Ticket/Display.html?id=130167

Sample fail
report​:http​://www.cpantesters.org/cpan/report/4233a800-9930-11e9-
be61-77a676735216

invoker wasn't correctly setting OP_PARENT when slicing in a new op.

The diff below fixes it, at least for blead - haven't tested with
older perls, especially pre-5.26.

Can't update the rt.cpan ticket at the momement as I have forgotten
my
account details, and am not physically located where I have them
written down.

--- invoker.xs- 2019-08-05 14​:21​:57.499383885 +0100
+++ invoker.xs 2019-08-05 14​:28​:05.560706198 +0100
@​@​ -63,11 +63,17 @​@​
gv = gv_fetchpvn_flags("self", 4, GV_NOINIT,
SVt_PV);
if (SvOK(gv) && SvTYPE(gv) == SVt_PVGV) {
// "$self" was defined as a package variable --
use it

/me spots C++ comments ^^

- cUNOPx(arg)->op_first = newGVOP(
+ OP *new_gvop = newGVOP(
gvop->op_type,
gvop->op_flags,
gv
);
+#if PERL_REVISION == 5 && PERL_VERSION >= 26
+ op_sibling_splice(arg, NULL, 1, new_gvop);
+#else
+ cUNOPx(arg)->op_first = new_gvop;
+#endif
+ op_free(gvop);
}
else {
croak("$self not found");

I submitted a patch based on the discussion above in invoker's issue tracker. See​:
https://rt.cpan.org/Ticket/Display.html?id=130167#txn-1859100

As this is the only CPAN distro found so far to have been affected by the "breaking" commit, I'm marking this Pending Release so that the ticket no longer blocks 5.32.0. If we find other distros so affected, we can re-open this ticket.

Thank you very much.
--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Aug 5, 2019

@jkeenan - Status changed from 'open' to 'pending release'

@p5pRT p5pRT closed this as completed Aug 5, 2019
@p5pRT p5pRT added BBC Blead Breaks CPAN - changes in blead broke a cpan module(s) Severity Low distro-All labels Oct 19, 2019
@toddr toddr added this to the 5.32.0 milestone Oct 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BBC Blead Breaks CPAN - changes in blead broke a cpan module(s) distro-All
Projects
None yet
Development

No branches or pull requests

2 participants