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