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