On Mon, Feb 27, 2006 at 07:02:53PM +0100, Rafael Garcia-Suarez wrote: > On 2/27/06, John E. Malmberg <[EMAIL PROTECTED]> wrote: > > It looks like Perl is now detecting the error a little better. > > > > The results of blead 27323 on OpenVMS Alpha 8.2 are: > > > > EAGLE> mcr []ndbgperl -e '*a=$a=*b; $a=42' > > Assertion ((sstr)->sv_flags & 0xff) == SVt_PVGV || ((sstr)->sv_flags & > > 0xff) == SVt_PVLV failed: file "PERL_BUILD_ROOT:[000000]sv.c;1", line > > 3214 at -e line 1. > > %SYSTEM-F-ABORT, abort > > It does so because you use a perl compiled with -DDEBUGGING, I think > it still segfaults without that. But now we know were the segfault > happens :)
And the immediate why: (gdb) call Perl_sv_dump(my_perl, sstr) SV = UNKNOWN(0xff) (0x82781dc) at 0x8278f5c REFCNT = 0 FLAGS = () That's the source SV. And a type of 0xFF isn't in any of the excluded types in the switch statement earlier: case SVt_PVAV: case SVt_PVHV: case SVt_PVCV: case SVt_PVIO: { const char * const type = sv_reftype(sstr,0); if (PL_op) Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_NAME(PL_op)); else Perl_croak(aTHX_ "Bizarre copy of %s", type); } break; so it's deemed to be acceptable to copy. I'm going to test what happens if I replace those 4 cases by default. Not that this will solve the bug, but it should produce a better error. Nicholas Clark -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]