Michael G Schwern wrote:
Program received signal EXC_BAD_ACCESS, Could not access memory.
0x00041548 in XS_UNIVERSAL_VERSION ()

OK, so this has nothing at all to do with the version object code (which was my initial concern). The line that fails is this one:

        if (gvp && isGV(gv = *gvp) && SvOK(sv = GvSV(gv))) {

and it fails in Pod::Perldoc::ToMan, which doesn't have a $VERSION:

(gdb) print Perl_sv_dump(*gvp)
SV = PVGV(0x8149fe8) at 0x8122b08
  REFCNT = 1
  FLAGS = (GMG,SMG,MULTI)
  IV = 0
  NV = 0
  MAGIC = 0x80a7f58
    MG_VIRTUAL = &PL_vtbl_glob
    MG_TYPE = PERL_MAGIC_glob(*)
    MG_OBJ = 0x8122b08
  NAME = "VERSION"
  NAMELEN = 7
  GvSTASH = 0x8122b38   "Pod::Perldoc::ToMan"
  GP = 0x814dd00
    SV = 0x0
    REFCNT = 1
    IO = 0x0
    FORM = 0x0
    AV = 0x0
    HV = 0x0
    CV = 0x804c508
    CVGEN = 0x1d5
    LINE = 502
    FILE = "lib/Pod/Perldoc.pm"
    FLAGS = 0x2
    EGV = 0x8122b08     "VERSION"

Note that the SV is null. This is not an unusual state (not all packages have $VERSION) and the code indeed used to handle that just fine.

So it would seems that this is the portion of the above line which is broken:

        SvOK(sv = GvSV(gv))

which of course, being a couple of macros, I can't easily step into. AND SvOK hasn't changed in 8 years, which leaves the GvSV macro, so I'd suspect this patch (and the ones completing the feature):

----------------------------------------------------------------------
r17832 (orig r25009):  nicholas | 2005-06-29 15:58:14 -0400

First stab at not automatically creating an unused SV for GvSV
Enable it with -DPERL_DONT_CREATE_GVSV.
Currently if enabled 22 test scripts have failures, so still some way
to go.

----------------------------------------------------------------------

I'm backreving to before those patches to see if the cores go away.

John

--
John Peacock
Director of Information Research and Technology
Rowman & Littlefield Publishing Group
4501 Forbes Boulevard
Suite H
Lanham, MD  20706
301-459-3366 x.5010
fax 301-429-5748

Reply via email to