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" <kes-...@yandex.ua>: > 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" <shlo...@shlomifish.org>: >> 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