Re: Segmentation fault under -d flag

2015-12-09 Thread KES
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

2015-12-09 Thread 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

2015-12-07 Thread 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

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 .