Re: CPAN Upload: A/AB/ABERGMAN/ponie-2.tar.gz - Ponie Development Release 2

[email protected] (Andrew Dougherty) Mon, 15 Mar 2004 14:08:33 -0500 (EST)
Newsgroups perl.ponie.dev
Message-ID <[email protected]>
On Mon, 15 Mar 2004, Arthur Bergman wrote:

>
> On 15 Mar 2004, at 14:46, Andrew Dougherty wrote:
>
> > After applying a few little build patches, ponie generally built fine,
> > except for the following warnings:
> >
> > "mg.c", line 1821: warning: a cast does not yield an lvalue

> > sv.h:#define LvTARG(sv)      ((SV*)*Perl_macro_LvTARG(aTHX_ (SV*)(sv)))

> Thanks for the catch, it was a forgetting definition, LvTARG should
> just lose the (SV*) type as Perl_macro_LvTARG returns SV**. I am happy
> this lvalue function hack we are using works in older compilers.

Ok, fixing that, I get rid of the warnings.  Alas, I still get the
same one failure, durint t/x2p/s2p:
>
> > t/x2p/s2p....1..56
> > ok 51 - psed w
> > Illegal Instruction - core dumped
> > ok 52 - s2p w
> >
> > Running dbx() on the core file gives:
> >
> > t@1 (l@1) terminated by signal ILL (illegal opcode)
> > Current function is Parrot_PMC_get_pointer
> >    74       return VTABLE_get_pointer(interp, pmc);
> > (dbx) where
> > current thread: t@1
> >   [1] 0x4f3b1c(0x48b680, 0x4bb768, 0x13, 0x12, 0x11, 0x4bff88), at
> > 0x4f3b1b
> > =>[2] Parrot_PMC_get_pointer(interp = 0x48b680, pmc = 0x4bb768), line
> > 74 in "extend.c"
> >   [3] Perl_macro_AvARRAY(av = 0x4bb778), line 26 in "av.c"

> What does illegal opcode really mean, that the stack is screwed?

Usually, yes.  This crash occurs during the 'w' test. There are three
steps to the test:

1.  Run psed.  That works fine.
2.  Run ../x2p/s2p on an input file.  That works fine.
3.  Run ./perl on the file generated in the previous step.
    This generates the correct output, but then crashes before
    exiting (but only PERL_DESTRUCT_LEVEL is set to 1 or higher,
    which is what the TEST harness does.)

I don't see anything obviously wrong with any of the individual files, but
the s2p output for the 'w' test does do some fileno() manipulations.
Somethings obviously going awry during the final destruction phase, but I
don't know what.

I'll continue to try to poke at this as time permits.

-- 
    Andy Dougherty		[email protected]