[Mono-bugs] [Bug 462016] make check for pinvoke2.exe fails for PowerPC

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Dec 23 17:33:10 EST 2008


https://bugzilla.novell.com/show_bug.cgi?id=462016

User munroesj at us.ibm.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=462016#c2


Steven Munroe <munroesj at us.ibm.com> changed:

           What    |Removed                                         |Added
----------------------------------------------------------------------------
                 CC|                                                |munroesj at us.ibm.com




--- Comment #2 from Steven Munroe <munroesj at us.ibm.com>  2008-12-23 15:33:09 MST ---
This is annoying

The bogus MonoClass seems to be referenced out of the instruction stream.
stating with mini.c:mono_allocate_stack_slots_full():

   size = mono_class_native_size (inst->inst_vtype->data.klass, &align);

and marshal.c:mono_class_native_size(MonoClass *klass, guint32 *align) calls:

   mono_marshal_load_type_info (klass);

and marshal.c:mono_marshal_load_type_info(MonoClass* klass) calls:

   mono_class_init (klass);

and class.c: mono_class_init(MonoClass* class) recursively calls itself:


   if (class->parent && !class->parent->inited) {
        mono_class_init (class->parent);
   }

Which recursively calls itself again:

   if (class->generic_class && !class->generic_class->is_dynamic) {
        MonoClass *gklass = class->generic_class->container_class;

        mono_stats.generic_class_count++;

        class->method = gklass->method;
        class->field = gklass->field;
        mono_class_init (gklass);

        mono_class_setup_methods (gklass);

        if (MONO_CLASS_IS_INTERFACE (class))
                class->interface_id = mono_get_unique_iid (class);

        g_assert (class->interface_count == gklass->interface_count);
   }

this call returns after initializing the "container_class" and dies on the
assert because class->interface_count and many other fields are bogus.

So far I have not been able to find where bad MonoClass was created or
initialized or where it was stuffed into the instruction stream ...


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list