develooper Front page | perl.perl5.porters | Postings from September 2012

Re: [perl #114990] Non assignment to *DB::DB causes segfault

Thread Previous | Thread Next
From:
Nicholas Clark
Date:
September 24, 2012 05:55
Subject:
Re: [perl #114990] Non assignment to *DB::DB causes segfault
Message ID:
20120924125544.GV5653@plum.flirble.org
On Mon, Sep 24, 2012 at 05:40:02AM -0700, Zsban Ambrus via RT wrote:

> perl -we 'sub DB::DB; BEGIN { $^P = 0x22; } for (0 .. 9) { warn "hello
> world"; }'

Thanks for the terse test case.

> This should give some kind of error or just print hello world ten times,
> but instead at least perl 5.14 seems to do nothing and exit
> successfully.  I don't have a more recent perl at hand to test now, sorry.

I do, but I don't have time to investigate this further (until at least
Thursday, but more likely November)

commit 432d4561c48cd74f3299eddc270a890908a4512e
Author: Jesse Luehrs <doy@tozt.net>
Date:   Mon Sep 24 00:29:06 2012 -0500

    don't crash with -d if DB::DB is seen but not defined [perl #114990]

(gdb) r
Starting program: /home/nick/Perl/perl/perl -we sub\ DB::DB\;\ BEGIN\ \{\ \$\^P\ =\ 0x22\;\ \}\ for\ \(0\ ..\ 9\)\ \{\ warn\ \"hello\ world\"\;\ \}

Program received signal SIGSEGV, Segmentation fault.
0x0000000000528185 in Perl_pp_dbstate () at pp_ctl.c:1997
1997                PAD_SET_CUR_NOSAVE(CvPADLIST(cv), 1);
(gdb) p cv
$1 = (CV *) 0x7f2f78
(gdb) call Perl_sv_dump(cv)
SV = PVCV(0x7f1098) at 0x7f2f78
  REFCNT = 3
  FLAGS = ()
  COMP_STASH = 0x7dfff8 "DB"
  ROOT = 0x0
  GVGV::GV = 0x7f2e88   "DB" :: "DB"
  FILE = "-e"
  DEPTH = 1
  FLAGS = 0x0
  OUTSIDE_SEQ = 0
  PADLIST = 0x0
  OUTSIDE = 0x0 (null)

Nicholas Clark

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