Re: [perl5-porters] reworked context stack system

[email protected] (Roderich Schupp)
Newsgroups perl.par
Message-ID <CAC9r9zYFfZrf3bXW2oGgd+_3vuM9cE0RT0BMq7PPkMHPwkhF9A@mail.gmail.com>
On January 8, 2016 10:53, Steffen Mueller wrote in perl5-porters:

Picking out one of the failures:
>
On 01/07/2016 09:59 PM, Andreas Koenig wrote:
> > - RSCHUPP/PAR-Packer-1.028.tar.gz
> >
> >    main.o: In function `par_redo_stack':
> >
>  /tmp/loop_over_bdir-6977-63Xcet/PAR-Packer-1.028-WKcHP9/myldr/internals.c:3:
> undefined reference to `PUSHEVAL'
>
My gut says that this should be easy to fix, but I haven't tried. I also

don't know if I'll get to it any time soon (and also, Roderich is quite

capable of it himself).


Uh, that's the infamous Internals::PAR::CLEARSTACK (in myldr/internals.c).
I've wondered on several occasions what its intended purpose was.
My guess is that a script like

use Carp qw(cluck);
sub bar { cluck("you are here -->\n"); }
sub foo { bar(); }
foo();

which produces the following output

you are here -->
 at cluck.pl line 2.
        main::bar() called at cluck.pl line 3
        main::foo() called at cluck.pl line 4

would produce the same output when packed, instead of

you are here -->
 at script/cluck.pl line 2.
        main::bar() called at script/cluck.pl line 3
        main::foo() called at script/cluck.pl line 4
        require main called at
/home/roderich/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/PAR.pm
line 636
        PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x1d500e0)', 1)
called at script/main.pl line 26
        require main called at
/home/roderich/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/PAR.pm
line 636
        PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x1d503c8)')
called at
/home/roderich/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/PAR.pm
line 428
        PAR::import('PAR') called at -e line 634
        eval {...} called at -e line 41
        __par_pl::BEGIN() called at script/cluck.pl line 0
        eval {...} called at script/cluck.pl line 0

However, this CLEARSTACK feature has not been enabled for ages. In fact, if
I enable it it makes any packed executable segfault with any version of
perl >= 5.8.
Hence it's time to finally dike it out.

Cheers, Roderich
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.