Sorry, I have no idea what is going on.  From looking at the Perl
sources, I get a bad vibe from the call_sv() inside Perl_init_os_extras()
in win32/win32.c.  The Perl interpreter isn't fully initialized when
this function is called, so it is not clear to me that it is really
safe to use the Perl calling mechanism yet.

Just as an experiment, you could replace the whole block

    /* load Win32 CORE stubs, assuming Win32CORE was statically linked */
    if ((cv = get_cv("Win32CORE::bootstrap", 0))) {
        dSP;
        PUSHMARK(SP);
        (void)call_sv((SV *)cv, G_EVAL|G_DISCARD|G_VOID);
    }

with just a call to boot_Win32CORE() (and add the appropriate EXTERN
definition too), just to see if this makes the error go away.

Cheers,
-Jan

> -----Original Message-----
> From: Steve Hay [mailto:[EMAIL PROTECTED]
> Sent: June 19, 2007 6:06 AM
> To: [email protected]
> Cc: Jan Dubois
> Subject: Problem in Win32CORE when building PAR-Packer-0.975 with bleadperl 
> on Win32
> 
> I'm trying to build PAR-Packer-0.975 with bleadperl (as of patchlevel
> 31376) on Win32 using VC++ 6.0 and I have a crash from boot_Win32CORE()
> in static.exe during the build process.
> 
> The build has got as far as building myldr\static.exe and then runs:
> 
> .\static.exe -I"C:/Temp/PAR-Packer-0.975/inc" -I"C:/perl5/lib"
> -I"C:/perl5/site/lib" -I"C:/Temp/PAR-Packer-0.975" -I"." -I../myldr/..
> -I../blib/lib -q -B -O..\script\parl.exe
> 
> from the \myldr sub-directory. (My perl is installed in C:\perl5.)
> 
> That program runs through the code in myldr\static.c down to this line:
> 
> i = spawnvpe(P_WAIT, my_file, (const char* const*)argv, (const char*
> const*)environ);
> 
> at which point it spawns another program called static.exe living in the
> following temporary directory:
> 
> C:\Documents and Settings\steveh\Local
> Settings\Temp\par-steveh\cache-161d47eb7091f16be8219bba46b7f98b4a4ca24d
> 
> The arguments in "argv" in the spawnvp() call above are:
> 
> C:\Temp\PAR-Packer-0.975\myldr\static.exe -IC:/Temp/PAR-Packer-0.975/inc
> -IC:/perl5/lib -IC:/perl5/site/lib -IC:/Temp/PAR-Packer-0.975 -I.
> -I../myldr/.. -I../blib/lib -q -B -O..\script\parl.exe
> 
> so I tried running the version of static.exe in the "cache" directory
> above with those arguments. This also crashes, in apparently the same
> way as when building PAR-Packer, but is now easier to debug...
> 
> The debugger shows it crashes on the first line ("dXSARGS;") of
> boot_Win32CORE():
> 
> boot_Win32CORE(cv * 0x009756a8) line 60 + 14 bytes
> Perl_pp_entersub() line 2820 + 12 bytes
> Perl_call_sv(sv * 0x009756a8, long 134) line 2691 + 18 bytes
> Perl_init_os_extras() line 4592 + 14 bytes
> S_parse_body(char * * 0x00000000, void (void)* 0x00404a57
> par_xs_init(void)) line 2178
> perl_parse(interpreter * 0x00831010, void (void)* 0x00404a57
> par_xs_init(void), int 15, char * * 0x0097d008, char * * 0x00000000)
> line 1618 + 13 bytes
> main(int 12, char * * 0x00831c90, char * * 0x00830bf0) line 127 + 38 bytes
> STATIC! mainCRTStartup + 227 bytes
> KERNEL32! 7c816fd7()
> 
> The crash is an Access Violation, but I've no idea what's gone wrong
> here. Any ideas?
> 
> My perl installation is a debug build without multiplicity, ithreads or
> the implicit host layer and with perl's malloc(). The full "perl -V"
> output is below.
> 
> Summary of my perl5 (revision 5 version 9 subversion 5) configuration:
>    Platform:
>      osname=MSWin32, osvers=5.1, archname=MSWin32-x86-perlio
>      uname=''
>      config_args='undef'
>      hint=recommended, useposix=true, d_sigaction=undef
>      useithreads=undef, usemultiplicity=undef
>      useperlio=define, d_sfio=undef, uselargefiles=undef, usesocks=undef
>      use64bitint=undef, use64bitall=undef, uselongdouble=undef
>      usemymalloc=y, bincompat5005=undef
>    Compiler:
>      cc='cl', ccflags ='-nologo -GF -W3 -Od -MD -Zi -DDEBUGGING -DWIN32
> -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT  -DPERL_DEBUGGING_MSTATS
> -DUSE_PERLIO -DPERL_MSVCRT_READFIX',
>      optimize='-Od -MD -Zi -DDEBUGGING',
>      cppflags='-DWIN32'
>      ccversion='12.00.8804', gccversion='', gccosandvers=''
>      intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
>      d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
>      ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize=4
>      alignbytes=8, prototype=define
>    Linker and Libraries:
>      ld='link', ldflags ='-nologo -nodefaultlib -debug
> -libpath:"C:\perl5\lib\CORE"  -machine:x86'
>      libpth="C:\Program Files\Microsoft Visual Studio\VC98\lib"
>      libs=  oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
>   comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
> netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib  version.lib
> odbc32.lib odbccp32.lib msvcrt.lib
>      perllibs=  oldnames.lib kernel32.lib user32.lib gdi32.lib
> winspool.lib  comdlg32.lib advapi32.lib shell32.lib ole32.lib
> oleaut32.lib  netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib
> version.lib odbc32.lib odbccp32.lib msvcrt.lib
>      libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl59.lib
>      gnulibc_version=''
>    Dynamic Linking:
>      dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
>      cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug
> -libpath:"C:\perl5\lib\CORE"  -machine:x86'
> 
> 
> Characteristics of this binary (from libperl):
>    Compile-time options: DEBUGGING MYMALLOC PERL_DONT_CREATE_GVSV
>                          PERL_MALLOC_WRAP USE_PERLIO
>    Locally applied patches:
>       DEVEL
>    Built under MSWin32
>    Compiled at Jun 14 2007 09:20:24
>    @INC:
>      C:/perl5/lib
>      C:/perl5/site/lib
>      .
> 
> --

Reply via email to