Skip to content

BBC: AYOUNG/OpenVZ-0.01.tar.gz fails since 5.31.7 #17567

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

Closed
eserte opened this issue Feb 16, 2020 · 8 comments
Closed

BBC: AYOUNG/OpenVZ-0.01.tar.gz fails since 5.31.7 #17567

eserte opened this issue Feb 16, 2020 · 8 comments
Labels
BBC Blead Breaks CPAN - changes in blead broke a cpan module(s)
Milestone

Comments

@eserte
Copy link
Contributor

eserte commented Feb 16, 2020

OpenVZ-0.01 fails since perl 5.31.7. See http://fast-matrix.cpantesters.org/?dist=OpenVZ%200.01
It seems that "Out of memory" errors happen here.

Please note that the test suite always fails on *BSD systems, with all perl versions.

@eserte eserte added BBC Blead Breaks CPAN - changes in blead broke a cpan module(s) Needs Triage affects-5.31 labels Feb 16, 2020
@jkeenan
Copy link
Contributor

jkeenan commented Feb 16, 2020

OpenVZ-0.01 fails since perl 5.31.7. See http://fast-matrix.cpantesters.org/?dist=OpenVZ%200.01
It seems that "Out of memory" errors happen here.

Please note that the test suite always fails on *BSD systems, with all perl versions.

Bisection point to ....

f2f32cd638746f538da6db804dab6dd54e654f30 is the first bad commit
commit f2f32cd638746f538da6db804dab6dd54e654f30
Author: David Mitchell <[email protected]>
Date:   Fri Dec 13 13:48:25 2019 +0000
Commit:     David Mitchell <[email protected]>
CommitDate: Fri Dec 13 21:38:45 2019 +0000


    avoid identical stack traces
    
    GH #15109
    
    The output of caller() (e.g. as produced by carp::Confess) produces
    multiple identical outputs when within a nested use/require. This is
    because at the time of calling the 'BEGIN { require ... }', PL_curcop is
    set to &PL_compiling, which is a fixed buffer within the interpreter,
    whose individual file and line fields are saved and restored when doing
    a new require/eval. This means that within the innermost require,
    PL_compiling has file:lineno of the innermost source file, and multiple
    saved PL_curcop values in the context stack frames all point to the same
    &PL_copmpiling.  So all levels of the stack trace appear to come from the
    innermost file.
    
    This commit fixes this (after a fashion) by, at the start of calling a
    BEGIN, making PL_curcop point to a temporary copy of PL_compiling
    instead.
    
    This is all a bit of a hack.

@iabyn Dave, can you take a look?

Thank you very much.
Jim Keenan

@jkeenan
Copy link
Contributor

jkeenan commented Feb 17, 2020

OpenVZ-0.01 fails since perl 5.31.7. See http://fast-matrix.cpantesters.org/?dist=OpenVZ%200.01
It seems that "Out of memory" errors happen here.
Please note that the test suite always fails on *BSD systems, with all perl versions.

Bisection point to ....

f2f32cd638746f538da6db804dab6dd54e654f30 is the first bad commit
commit f2f32cd638746f538da6db804dab6dd54e654f30
Author: David Mitchell <[email protected]>
Date:   Fri Dec 13 13:48:25 2019 +0000
Commit:     David Mitchell <[email protected]>
CommitDate: Fri Dec 13 21:38:45 2019 +0000


    avoid identical stack traces
    
    GH #15109
    
    The output of caller() (e.g. as produced by carp::Confess) produces
    multiple identical outputs when within a nested use/require. This is
    because at the time of calling the 'BEGIN { require ... }', PL_curcop is
    set to &PL_compiling, which is a fixed buffer within the interpreter,
    whose individual file and line fields are saved and restored when doing
    a new require/eval. This means that within the innermost require,
    PL_compiling has file:lineno of the innermost source file, and multiple
    saved PL_curcop values in the context stack frames all point to the same
    &PL_copmpiling.  So all levels of the stack trace appear to come from the
    innermost file.
    
    This commit fixes this (after a fashion) by, at the start of calling a
    BEGIN, making PL_curcop point to a temporary copy of PL_compiling
    instead.
    
    This is all a bit of a hack.

@iabyn Dave, can you take a look?

Bisection points to f2f32cd for test failures in Devel::Hide as well. These were reported on list:
https://www.nntp.perl.org/group/perl.perl5.porters/2020/02/msg257128.html

Thank you very much.
Jim Keenan

@toddr toddr added this to the 5.32.0 milestone Feb 17, 2020
iabyn added a commit that referenced this issue Mar 12, 2020
GH #15109, #17567

My original fix for this issue, v5.31.6-141-gf2f32cd638
made a shallow copy of &PL_compiling. However, for non-default
warning bits, this made two COPs share the malloced() cop_warnings,
and bad things ensured. In particular this was flagged up in:

    GH #17567: "BBC: AYOUNG/OpenVZ-0.01.tar.gz"

The fix in this commit is to do a deep copy of the COP using
newSTATEOP().
@iabyn
Copy link
Contributor

iabyn commented Mar 12, 2020 via email

@atoomic
Copy link
Member

atoomic commented Mar 12, 2020

I had to revert the change from fb8188b which was causing some other issues during global destruction as seen on the smokers

Unbalanced string table refcount: (1) for "open_IN" during global destruction.

view https://github.com/atoomic/perl5/runs/504137544?check_suite_focus=true

@jkeenan
Copy link
Contributor

jkeenan commented Mar 12, 2020

OpenVZ-0.01 fails since perl 5.31.7. See http://fast-matrix.cpantesters.org/?dist=OpenVZ%200.01
It seems that "Out of memory" errors happen here.

Please note that the test suite always fails on *BSD systems, with all perl versions.

@eserte Am I correct in understanding you to say that the OpenVZ test failures on *BSD are not Perl 5-related problems, but the distribution's problems?

If so, then I think we can close this ticket, as I am now able to install OpenVZ against blead on Linux. What do your CPANtesters say?

Thank you very much.
Jim Keenan

@jkeenan jkeenan added the Closable? We might be able to close this ticket, but we need to check with the reporter label Mar 12, 2020
@eserte
Copy link
Contributor Author

eserte commented Mar 14, 2020

It fails on *BSD since perl 5.8.9, so it's at least not a new bleadperl problem.
We'll get CPANTesters results probably with 5.31.10.

iabyn added a commit that referenced this issue Mar 18, 2020
GH #15109, #17567

[ this commit was originally applied as v5.31.9-121-gfb8188b84d, but was
quickly reverted by v5.31.9-124-g6311900a66. I'm now -re-applying it,
but with a 'SAVEFREEOP(PL_curcop)' added, which was missing from the
original commit. ]

My original fix for this issue, v5.31.6-141-gf2f32cd638
made a shallow copy of &PL_compiling. However, for non-default
warning bits, this made two COPs share the malloced() cop_warnings,
and bad things ensured. In particular this was flagged up in:

    GH #17567: "BBC: AYOUNG/OpenVZ-0.01.tar.gz"

The fix in this commit is to do a deep copy of the COP using
newSTATEOP().
@iabyn
Copy link
Contributor

iabyn commented Mar 18, 2020 via email

@xsawyerx
Copy link
Member

xsawyerx commented Apr 1, 2020

I think we're ready to close this.

@jkeenan jkeenan removed the Closable? We might be able to close this ticket, but we need to check with the reporter label Apr 1, 2020
@jkeenan jkeenan closed this as completed Apr 1, 2020
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)
Projects
None yet
Development

No branches or pull requests

6 participants