[rt.cpan.org #96279] "Perl -MO=Xref Win32/API.pm" (0.74, 0.77) gives runtime error on Perl 5.12.4

[email protected] ("Daniel Dragan via RT") Fri, 6 Jun 2014 10:32:35 -0400
Newsgroups perl.libwin32
Message-ID <[email protected]>
Fri Jun 06 10:32:34 2014: Request 96279 was acted upon.
Transaction: Correspondence added by BULKDD
       Queue: Win32-API
     Subject: "Perl -MO=Xref Win32/API.pm" (0.74, 0.77) gives runtime error on Perl 5.12.4
   Broken in: 0.74, 0.77
    Severity: Normal
       Owner: Nobody
  Requestors: [email protected]
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=96279 >


I am using a slightly different command line, "perl -MO=Xref -MWin32::API -E"0"". Its generating a segv as you have.

I get 

First-chance exception at 0x100018e2 (B.dll) in : 0xC0000005: Access violation reading location 0x0000000a.

callstack

	B.dll!make_sv_object(interpreter * my_perl=0x003923b4, sv * arg=0x00a7592c, sv * sv=0x00000002)  Line 252 + 0x3	C
 	B.dll!XS_B__GV_STASH(interpreter * my_perl=0x003923b4, cv * cv=0x0088a78c)  Line 4903 + 0x22	C
 	perl512.dll!Perl_pp_entersub(interpreter * my_perl=0x003923b4)  Line 2882 + 0x10	C
 	perl512.dll!Perl_runops_debug(interpreter * my_perl=0x003923b4)  Line 2049 + 0xd	C
 	perl512.dll!Perl_call_sv(interpreter * my_perl=0x003923b4, sv * sv=0x008e49ec, volatile long flags=14)  Line 2605 + 0x36	C
 	perl512.dll!Perl_call_list(interpreter * my_perl=0x003923b4, long oldscope=1, av * paramList=0x008e4b6c)  Line 4600 + 0x52	C
 	perl512.dll!perl_parse(interpreter * my_perl=0x003923b4, void (interpreter *)* xsinit=0x281d2190, int argc=4, char * * argv=0x00284d68, char * * env=0x00285ed8)  Line 1609 + 0x17	C
 	perl512.dll!RunPerl(int argc=4, char * * argv=0x00284d68, char * * env=0x00285ed8)  Line 263 + 0x1a	C++
 	perl.exe!main(int argc=4, char * * argv=0x00284d68, char * * env=0x00283390)  Line 23 + 0x12	C
 	perl.exe!mainCRTStartup()  Line 398 + 0xe	C
 	kernel32.dll!_BaseProcessStart@4()  + 0x23	


the gv in XSUB XS_B__GV_STASH, is type 9, which means GV, yet sv_u, is a string pointer to the string/PV "num". Also in the SV body, it has magic of type "B" (#define PERL_MAGIC_bm		  'B' /* Boyer-Moore (fast string search) */) and vtable of PL_vtbl_bm. Which is very wrong for a GV. I have to figure out where I am in PP and where it got this broken GV from.