lang/perl5.12 segfault (amd64 - 8-STABLE)
Janne Snabb
snabb at epipe.com
Sat Jul 17 08:11:38 UTC 2010
Hi,
Same problem here.
Here is the gdb output:
#0 0x00000000004ddbd3 in Perl_safesyscalloc (count=1, size=4072) at util.c:311
311 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) calloc %ld x %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)count,(long)total_size));
(gdb) bt
#0 0x00000000004ddbd3 in Perl_safesyscalloc (count=1, size=4072) at util.c:311
#1 0x000000000054a28f in Perl_get_arena (my_perl=0x801002500,
arena_size=3880, bodytype=SVt_PV) at sv.c:737
#2 0x000000000054a584 in S_more_bodies (my_perl=0x801002500, sv_type=SVt_PV)
at sv.c:1104
#3 0x000000000054b829 in Perl_sv_upgrade (my_perl=0x801002500,
sv=0x801002c98, new_type=SVt_PV) at sv.c:1398
#4 0x00000000005722ff in Perl_sv_setpv (my_perl=0x801002500, sv=0x801002c98,
ptr=0x791d5a "") at sv.c:4387
#5 0x0000000000748695 in perl_construct (my_perl=0x801002500) at perl.c:254
#6 0x000000000071e6a7 in main (argc=3, argv=0x7fffffffe368,
env=0x7fffffffe388) at miniperlmain.c:111
It is somehow related to the "Perl_debug_log" which is the first
argument of PerlIO_printf. But I can not figure out why, too many
layers of #defines and calls within calls.
If I insert a line which references Perl_debug_log before the
problematic line, it will dump core on that line, gdb output:
Program received signal SIGSEGV, Segmentation fault.
0x00000000006f2de0 in Perl_PerlIO_stderr (my_perl=0x0) at perlio.c:4981
4981 if (!PL_perlio) {
I cannot inspect PL_perlio because it is another macro, from perlapi.h:
#define PL_perlio (*Perl_Iperlio_ptr(aTHX))
aTHX is defined in perl.h to be my_perl, which seems to be a null
pointer:
(gdb) p my_perl
$1 = (PerlInterpreter *) 0x0
So, the miniperl process dies because it cannot de-reference this
NULL pointer. I have no clue where it should be initialized.
--
Janne Snabb / EPIPE Communications
snabb at epipe.com - http://epipe.com/
More information about the freebsd-ports
mailing list