Re: Segmentation fault under -d flag
That is because program run into recursion: Package::Stash::XS::namespace Package::Stash::XS::namespace Package::Stash::XS::namespace Package::Stash::XS::namespace Segmentation fault http://search.cpan.org/~abigail/perl-5.23.5/pod/perlvar.pod#$^P Actually I should disable first bit: local $^P = $^P & ~1 my $all = $this->get_all_symbols; but the $^P does not work at runtime. Because the 'JMP' ops are created at compile time. but the perl may check first $^P bit at run time. And if it is not set do not pass control to DB::sub/lsub/goto. And in compile time create 'JMP' not to DB::sub but to the DB::_sub { &DB::sub if $^P & 1; } same code for goto and lsub. This seems simple to fix. 09.12.2015, 13:07, "KES" : > Here the another 'segmentation fault' > > $cat t.pl > my $x; > > $ cat Devel/PkgATCompileTime; > package Devel::PkgAtCompileTime; > > use Devel::ImportArgs; > > 1; > > $cat Devel/ImportArgs; > package Devel::ImportArgs; > > sub import { > } > > package # hide the package from the PAUSE indexer > DB; > > use Package::Stash; > my $this = Package::Stash->new( 'DB' ); > > sub sub { > # I feel this is a crazy thing and I should not do it here. But > occasionally I have did it. > my $all = $this->get_all_symbols; > &$DB::sub; > } > > sub DB { > } > > 1; > > $ perl -d:PkgAtCompileTime t.pl > Segmentation fault > > 07.12.2015, 16:05, "Shlomi Fish" : >> Hi KES, >> >> I was able to reduce the code significantly and it seems to be caused by >> Time::HiRes: >> >> https://github.com/shlomif/perl5-Time-HiRes-perl-d-segfault >> >> I was also able to reproduce it on the latest bleadperl. I'm going to report >> this bug. >> >> Thanks! >> >> Regards, >> >> Shlomi Fish
Re: Segmentation fault under -d flag
Here the another 'segmentation fault' $cat t.pl my $x; $ cat Devel/PkgATCompileTime; package Devel::PkgAtCompileTime; use Devel::ImportArgs; 1; $cat Devel/ImportArgs; package Devel::ImportArgs; sub import { } package# hide the package from the PAUSE indexer DB; use Package::Stash; my $this = Package::Stash->new( 'DB' ); sub sub { # I feel this is a crazy thing and I should not do it here. But occasionally I have did it. my $all = $this->get_all_symbols; &$DB::sub; } sub DB { } 1; $ perl -d:PkgAtCompileTime t.pl Segmentation fault 07.12.2015, 16:05, "Shlomi Fish" : > Hi KES, > > I was able to reduce the code significantly and it seems to be caused by > Time::HiRes: > > https://github.com/shlomif/perl5-Time-HiRes-perl-d-segfault > > I was also able to reproduce it on the latest bleadperl. I'm going to report > this bug. > > Thanks! > > Regards, > > Shlomi Fish >
Re: Segmentation fault under -d flag
Hi KES, I was able to reduce the code significantly and it seems to be caused by Time::HiRes: https://github.com/shlomif/perl5-Time-HiRes-perl-d-segfault I was also able to reproduce it on the latest bleadperl. I'm going to report this bug. Thanks! Regards, Shlomi Fish On Sun, 06 Dec 2015 21:15:26 +0200 KES wrote: > Hi. > > This code woks fine: > package Devel::KP; > > our $VERSION = '0.01'; > > > package# hide the package from the PAUSE indexer >DB; > >sub sub { > goto &$DB::sub; >} > >use Benchmark qw/ cmpthese /; >sub DB { >} > >1; > > >But if I change DB::sub to look like: >sub sub { >print @_; > goto &$DB::sub; >} > > > I get segfault -- - Shlomi Fish http://www.shlomifish.org/ Perl Humour - http://perl-begin.org/humour/ To have bugs is human; to fix them — divine. Please reply to list if it's a mailing list post - http://shlom.in/reply .