Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Jul 2010 08:11:36 +0000 (UTC)
From:      Janne Snabb <snabb@epipe.com>
To:        Rainer Hurling <rhurlin@gwdg.de>
Cc:        freebsd-ports@freebsd.org, skv@freebsd.org, Mario Sergio Fujikawa Ferreira <lioux@freebsd.org>
Subject:   Re: lang/perl5.12 segfault (amd64 - 8-STABLE)
Message-ID:  <alpine.BSF.2.00.1007170744070.9805@tiktik.epipe.com>
In-Reply-To: <4C414AB5.1060305@gwdg.de>
References:  <20100717041919.70411.qmail@exxodus.fedaykin.here> <4C414AB5.1060305@gwdg.de>

next in thread | previous in thread | raw e-mail | index | archive | help
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@epipe.com - http://epipe.com/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1007170744070.9805>