Vladimir Lipsky <[EMAIL PROTECTED]> wrote:

> 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.

Which child interpreter? Parrot_destroy_vtable() is called after
free_unused_pobjects().

> ((*((Buffer *)b)).obj).flags =

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

Array, SArray, PerlHash and some more look the same. You could try to
set the report_FLAG in $class.c:init() for these classes one after the
other.

> 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]

Strange.

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

> what does valgrind exactly do?

valgrind translates a x86 binary into an internal representation and
interprets this code. It can detect all kind of access violations,
code-paths depending on uninitialized data and so on.

> 0x4C56

leo

Reply via email to