develooper Front page | perl.perl5.porters | Postings from September 2018

[perl #2754] [BUG] can't exit 0 from CHECK{}

From:
James E Keenan via RT
Date:
September 25, 2018 14:52
Subject:
[perl #2754] [BUG] can't exit 0 from CHECK{}
Message ID:
rt-4.0.24-1795-1537887160-327.2754-15-0@perl.org
On Wed, 27 Dec 2017 22:43:00 GMT, jkeenan wrote:
> Re-opening ticket per discussion.

We should try to move this ticket and the related
https://rt.perl.org/Ticket/Display.html?id=132577 to
resolution.  What follows are my understanding of the issues
and suggestions for resolution.

1. The ticket was filed eighteen-and-a-half years ago by Tom
Christiansen.  Discussion proceeded sporadically over the
years.

2. Zefram reported solving the bug on Dec 10 2017
(https://rt.perl.org/Ticket/Display.html?id=2754#txn-1514806)
and pushed the solution to blead in commit 0301e899536a22752f40481d8a1d141b7a7dda82.

3. By Dec 12 2017 CPAN breakage had been spotted --
specifically, in Module::Install -- and Zefram filed RT
132577.  He observed that the breakage point was in
Module::Install::DSL and opened a bug ticket in M-I's
tracker: https://rt.cpan.org/Ticket/Display.html?id=123867.
So that put us in the situation where a legitimate change to
blead triggered a failure in dodgy -- but heavily used --
code on CPAN.

4. While Module::Install could be fixed and was fixed by
Karen Etheridge on Dec 19 2017, many CPAN distributions
which embed an unfixed version of Module::Install::DSL
remain "unfixed" and would need a new CPAN release to embed
a "fixed" version of Module::Install::DSL.  Karen provides a
list of those distributions at
https://rt.cpan.org/Ticket/Display.html?id=123867#txn-1762016.
Most of them are distributions originally written by Adam
Kennedy.

5. Back in RT 132577 (the BBC ticket), discussion ensued
which led to a decision to revert Zefram's fix for RT 2754
for the balance of the 5.27 development cycle and to try
again during the (current) 5.29 cycle.  Zefram wrote:

"We expect to fix the bug again during the 5.29 cycle. This
would consist of reverting most of commit
857320cbf85e762add18885ae8a197b5e0c21b69: the documentation
and code changes in perl.c, and the test changes in
t/op/blocks.t. This issue should block 5.30.0."

In RT 2754 (this ticket), he wrote:

"In order to give Module::Install distros more time to roll
out a fix for [perl #132577], this bug [perl #2754] has been
reintroduced in commit
857320cbf85e762add18885ae8a197b5e0c21b69."

Pumpking Sawyer X concurred, writing:

"Following this, we should formulate a plan for dealing with
these distributions and having them release new versions. We
have time but our goal is to still have this bug fix in the
next version [5.30.0 -- JK] and this could only be done if
we are able to have enough distributions released with the
fix."

6. The complicating factor in giving CPAN distributions
using Module::Install::DSL "more time to roll out a fix for"
RT 132577 is that many experienced contributors (e.g., the
Perl Toolchain Gang) believe that Module::Install is
fundamentally unmaintainable over the long run; that should
be deprecated for new usage in CPAN distros; and that any
advice to authors of those distros should not only advise
using an upgraded Module::Install::DSL but should also
advise moving away from Module::Install entirely.

7. In an attempt to get some empirical data to inform this
discussion, I embarked on the following research:

a. I created a branch, "smoke-me/jkeenan/2754-re-revert",
from blead at commit 9d6ed46, i.e., shortly after the
release of perl-5.27.3. In that branch I reverted Zefram's
reversion commit and nothing more (see b64ae69c).
Smoke-testing rigs picked that branch up
(http://perl.develop-help.com/?b=smoke-me%2Fjkeenan%2F2754-re-revert)
with satisfactory results, i.e., the rigs which are getting
FAILs are not doing so because of this commit and are also
getting FAILs in blead.

b. I then wrote a program similar to the "test CPAN river
against dev releases" program upon which I have been
reporting to the P5P list since June.  I configured and
built perl from the 2754-re-revert branch
on a FreeBSD-11 machine, installed cpanm against that perl
and then attempted to install a large list of CPAN modules
against that perl.  That list was composed as follows:

i. Start with the same "CPAN river 3000" modules I've been
using in monthly test-against-dev testing.

ii. Remove those modules which got a non-PASS grade in last
week's post-5.29.3 run.  Among others, this removed
Catalyst-Runtime and its revdeps which were experiencing
non-BBC-related issues.

iii. Add the CPAN distributions listed as being revdeps of
Module::Install at
https://metacpan.org/requires/distribution/Module-Install?p=1&size=200&sort=%5B%5B2%2C1%5D%5D.

iv. Remove the M-I revdeps whose names begin with 'Task' or
'Bundle'.

c. I ran the program yesterday in an environment similar but
not identical to that which I use for the monthly
test-against-dev runs.  The difference is that in this
environment I have not installed as many external packages
as I have in the test-against-dev VM, so there were more
non-PASS grades due to unsatisfied prerequisites.

d. I examined the resulting data for the purpose of
determining the cause of non-PASS grades when run against
the "2754-re-revert" perl.  I identified 12 distros which
were graded 'NA' due to failures in the configuration stage.
All 12 of those distros were found in the list of distros
with unfixed embedded Module::Install::DSL provided by Karen
last December.  When I examined these distros individually
and ran them with the "stock" perl on this machine -- 5.26.2
-- each failed with "Can't locate inc/Module/Install/DSL.pm
in @INC".  When I ran them with the post-5.23.4,
2754-re-revert perl, "perl Makefile.PL" created no Makefile
-- which explains the configuration-stage NA grade.  I could
not attribute any other non-PASS grades in this run to
RT-2754 related issues.  (I can make the data and program
available upon request.)

8. I therefore believe that we can predict with reasonable
certainty what would happen if, in the current dev cycle, we
re-implemented Zefram's fix for this ticket.  Those CPAN
distributions which have not upgraded their embedded
Module::Install::DSL packages would break because the
distros would no longer be able to generate a Makefile.  But
beyond that there would be little impact.

9. I therefore believe that we should move forward on this.
To do so we would need to take the following steps:

a. Re-examine the chain of commits to determine whether the
2754-re-revert branch fully gets us to the state intended by
Zefram for the resolution of the original problem.

b. Come to consensus among P5P and Toolchain Gang as to what
to recommend to the maintainers of CPAN distributions with
non-upgraded versions of Module::Install::DSL concerning
this breakage and advise them that the distros will not work
in perl-5.30 unless they take action.

c. Merge the 2754-re-revert branch -- or an improved version
thereof -- into blead and monitor results via CPANtesters,
test-against-dev and any other appropriate means.  That
should enable resolution of both RT 2754 and RT 132577.

Thank you very much.

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

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



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About