develooper Front page | perl.perl5.porters | Postings from April 2010

Re: [perl #74170] Data::Dumper -- dumping large hash returns empty string, segfaults perl

Thread Previous | Thread Next
From:
Ævar Arnfjörð Bjarmason
Date:
April 9, 2010 08:31
Subject:
Re: [perl #74170] Data::Dumper -- dumping large hash returns empty string, segfaults perl
Message ID:
r2n51dd1af81004090831nd46b34b2je9b00038f7a3d1cd@mail.gmail.com
Thanks for the report. I'm attaching a copy of your test script for reference.

I can confirm that this happens in 5.10.1 and blead. Perl segfaults in
do_clean_objs:

    (gdb) bt full
    #0  0x081aa5d0 in do_clean_objs (my_perl=0x83f7008, ref=0x83fc9c4)
at sv.c:489
            target = 0x0
            __PRETTY_FUNCTION__ = "do_clean_objs"
    #1  0x081aa378 in S_visit (my_perl=0x83f7008, f=0x81aa413
<do_clean_objs>, flags=2048, mask=2048) at sv.c:440
            svend = 0x8d810fa4
            sv = 0x83fc9c4
            sva = 0x83fc5e4
            visited = 0
            __PRETTY_FUNCTION__ = "S_visit"
    #2  0x081ab3d2 in Perl_sv_clean_objs (my_perl=0x83f7008) at sv.c:548
    No locals.
    #3  0x0808c1e1 in perl_destruct (my_perl=0x83f7008) at perl.c:770
            destruct_level = 0 '\000'
            hv = 0x0
            __PRETTY_FUNCTION__ = "perl_destruct"
    #4  0x08064942 in main (argc=2, argv=0xbffff2f4, env=0xbffff300)
at perlmain.c:126
            exitstatus = 0
            i = 69

At that point Perl is working with a scalar that seems corrupted. It
claims to be a reference but isn't:

    (gdb) p SvFLAGS(ref) & SVf_ROK
    $14 = 2048

(Equivalent to SvRV() but gdb doesn't grok it):

    (gdb) p ref->sv_u.svu_rv
    $16 = (SV *) 0x0

Or in another session:

    (gdb) p ref->sv_u.svu_rv
    $5 = (SV *) 0x1

Or:

    (gdb) p target
    $1 = (SV * const) 0xabababab

Which then segfaults on:

    SvOBJECT(SvRV(ref))

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About