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

[email protected] (Nicholas Clark) Tue, 23 Mar 2004 14:03:48 +0000
Newsgroups perl.ponie.dev
Message-ID <[email protected]>
On Tue, Mar 23, 2004 at 12:42:41PM +0000, Steve Hay wrote:

> Sadly win32 doesn't start out with a config.h (neither parrot's one, nor 
> perl's one (which actually resides in win32/ on Win32)).

So how does win32 make a config.h?

> I can't build parrot first because it requires a perl with which to run 
> parrot's Configure.pl (which creates parrot's config.h);
> and I can't build perl first because it #includes various parrot header 
> files and complains that parrot/config.h doesn't (yet) exist!

Aha, I don't think I was clear - ponie's Configure.PL uses the perl that
ran it to run parrot's Configure.PL, not the "perl" it is about to build.
So you're actually doing just what Unix does.


> I'm sad enough to recognise that the error code there represents an 
> "access violation".  I rebuilt in debug mode and ran it through the VC++ 
> debugger.  Here's a backtrace of where it crashed:
> 
> pmc_new_noinit(Parrot_Interp * 0x00d24af8, long 0) line 179 + 12 bytes
> Parrot_PMC_new(Parrot_Interp * 0x00d24af8, long 0) line 465 + 13 bytes
> S_new_xpvhv(interpreter * 0x00d23dd8) line 992 + 19 bytes
> Perl_sv_upgrade(interpreter * 0x00d23dd8, sv * 0x00d958d0, unsigned long 
> 11) line 1765 + 9 bytes
> Perl_newHV(interpreter * 0x00d23dd8) line 1615 + 15 bytes
> perl_construct(interpreter * 0x00d23dd8) line 199 + 9 bytes
> main(int 1, char * * 0x00d22bf0, char * * 0x00d22ef0) line 80 + 11 bytes
> MINIPERL! mainCRTStartup + 227 bytes
> KERNEL32! 77e814c7()
> 
> The line on which it crashed is this:
> 
>     if (Parrot_base_vtables[base_type]->flags & VTABLE_PMC_IS_SINGLETON) {
> 
> but the debugger is showing Parrot_base_vtables[base_type] is 
> 0x00000000, hence the access violation.
> 
> Any ideas where to go next?  Is this a genuine flaw, or a symptom of my 
> having used the wrong perl to run parrot's Configure.pl?

I think it means that the 3 PMC classes supplied with ponie didn't get
built into parrot.

If you look at ponie's Configure.pl currently it symlinks these in
(the lines
     system('ln','-s','../../src/pmc/perl5lv.pmc') && die "error";
)

I can see why symlinks are useful here (to make it clear that these PMCs
injected into the parrot source tree don't belong there) but I guess that
for Win32 that's going to need to be a copy.

Nicholas Clark