On Tue, Nov 30, 2010 at 11:45:10AM +0000, Nicholas Clark wrote:
> On Mon, Nov 22, 2010 at 10:29:45AM +0000, Tim Bunce wrote:
> > See http://matrix.cpantesters.org/?dist=Devel-NYTProf+4.05_90
> > 
> > Can anyone shed light on why NYTProf 4.05_90 fails on OpenBSD?
> > (32-bit and amd64, with and without threads, perl 5.8.9 thru 5.12.2).
> > 
> > Looks like the profiler dies (exit status 139). The rest is noise.
> 
> The only OpenBSD system I have access to is the Sparc64 system in the GCC
> compiler farm. Only 1 test fails. Sometimes. But...
> 
> -bash-4.0$ cat 25.pl 
> use strict;
> use Benchmark;
> my $i;
> sub add { ++$i }
> timethis( 10, \&add );
> die "panic $i" unless $i == 10;
> $ NYTPROF=start=begin gdb --args 
> /home/nick/Sandpit/snap5.9.x-v5.12.2/bin/perl5.12.2 -I blib/lib/ -d:NYTProf 
> 25.pl
> (gdb) r
> timethis 10:  0 wallclock secs ( 0.00 usr +  0.00 sys =  0.00 CPU)
>             (warning: too few iterations for a reliable count)
> Program exited normally.
> (gdb) r
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000000048c584a8 in DB_leave (op=0x0, prev_op=0x46063980) at NYTProf.xs:1524
> 1524        is_multicall = (!op && CxMULTICALL(&cxstack[cxstack_ix]));
> (gdb) p op
> $1 = (OP *) 0x0
> (gdb) p PL_curstackinfo->si_cxix
> $2 = -1
> (gdb) p PL_curstackinfo->si_cxstack
> $3 = (PERL_CONTEXT *) 0x4577c000
> (gdb)
> 
> That doesn't look good, but I have no clue what it means.

Odd. (Both the behaviour and that you have no clue what it means ;-)

> Is that enough to go on? :-)

Absolutely. It points the finger at a half-started attempt to improve the
handling of multi-calls. I'd guess this change would be sufficient:

-   is_multicall = (!op && cxstack_ix >= 0 && 
CxMULTICALL(&cxstack[cxstack_ix]));
+   is_multicall = (!op && CxMULTICALL(&cxstack[cxstack_ix]));

But since the code doesn't actually do anything useful I'm happy to
simply disable it for now. (I'm keen to get a new release out so I can
make a new PostgreSQL::PLPerl::NYTProf before PGday.EU.)

I'll make a dev release soon. Thanks!

> valgrind 3.6.0 supports OS X now, if that helps.

Thanks Nicholas. I've installed it now.

Tim.

-- 
You've received this message because you are subscribed to
the Devel::NYTProf Development User group.

Group hosted at:  http://groups.google.com/group/develnytprof-dev
Project hosted at:  http://perl-devel-nytprof.googlecode.com
CPAN distribution:  http://search.cpan.org/dist/Devel-NYTProf

To post, email:  [email protected]
To unsubscribe, email:  [email protected]

Reply via email to