From: "Leopold Toetsch" <[EMAIL PROTECTED]>
Sent: Thursday, November 27, 2003 12:04 PM

> PMC (in gdb speak):
>   b dod.c:525
>   r t/pmc/pmc_61.pasm
>   p *(PMC *) b
>   p *((PMC *) b)->vtable
>   c
>   ...

Umm .. the problem is that this pmc doesn't have the vtable;
(*((PMC *)b)).vtable points to a block of memory which belonged
to the child interpreter's pool and has already been freed, I deduce
from examining the adresses. So it ends up with Access Violation in
ntdll!RtlFreeHeap when VTABLE_destroy is called.

Now I'm just trying to find out what type of a pmc it is, and track
down when the pmc is created. WRT type, all what I know is

((*((Buffer *)b)).obj).flags =
72353280(PObj_is_PMC_FLAG|PObj_is_PMC_EXT_FLAG|
PObj_custom_mark_FLAG|PObj_active_destroy_FLAG|
b_PObj_is_special_PMC_FLAG)

Do you know what type could have these flags set up? I'm no square but it
could be the managedstruct type.

And one more thing to say, I get one more segfault there (dod.c, line 525)
while testing with interpreter.flags | PARROT_DEBUG_FLAG [1]

> valgrind has no hint about a problem with this test.

what does valgrind exactly do?

> leo

0x4C56

[1] Parrot_set_flag(interpreter, PARROT_DEBUG_FLAG);


Reply via email to