John E. Malmberg wrote:
The trail has taken me to the following lines just below the comment
with the tag AMS 20010810.
while(mg) {
const MGVTBL * const vtbl = mg->mg_virtual;
if (!(mg->mg_flags & MGf_GSKIP) && vtbl && vtbl->svt_get) {
CALL_FTPR(vtbl->sv_get)(aTHX_ sv, mg);
On the return from this call, the Ibody_roots[7] is corrupted.
*vtbl-sv_get at this point is loaded with the function Perl_magic_get,
and the value it is looking for is the '?'.
And looking there, I find VMS specific code where the
my_perl->Istatusvalue_vms is put into sv->sv_any->slv_targlen.
Istatusvalue_vms contains 44, the same bad pointer value.
The body size for type SVt_PVMG (7) appears to be 32, which means that
the LvTARGLEN(sv) writing at offset 32 is the culprit, corrupting the
linked list.
I am not sure how to fix this, but now that I have found out this much,
maybe someone else here can?
-John
wb8...@qsl.net
Personal Opinion Only