[Mono-bugs] [Bug 77787][Wis] Changed - Mono fails on Itanium-machine

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Thu May 11 08:56:13 EDT 2006


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by yury at serdyuk.botik.ru.

http://bugzilla.ximian.com/show_bug.cgi?id=77787

--- shadow/77787	2006-05-11 08:20:46.000000000 -0400
+++ shadow/77787.tmp.24636	2006-05-11 08:56:13.000000000 -0400
@@ -409,6 +409,482 @@
 
 ------- Additional Comments From vargaz at gmail.com  2006-05-11 08:20 -------
 Could you print out the value of 'obj', 'offset' and GC_base (obj) 
 at the point of the assertion ? Also the value of
 obj->vtable->klass->name ?
 
+
+------- Additional Comments From Yury at serdyuk.botik.ru  2006-05-11 08:56 -------
+Sorry, I'm not a big specialist in C-debugging,
+so below is only some additional information:
+
+GNU gdb 6.4
+Copyright 2005 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License, and
+you are
+welcome to change it and/or distribute copies of it under certain
+conditions.
+Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB.  Type "show warranty" for
+details.
+This GDB was configured as "ia64-unknown-linux-gnu"...Using host
+libthread_db library "/lib/tls/libthread_db.so.1".
+
+(gdb) r /home/users/gramuser2/m-1.1.14/lib/mono/1.0/mcs.exe
+Starting program: /home/users/gramuser2/m-1.1.14/bin/mono
+/home/users/gramuser2/m-1.1.14/lib/mono/1.0/mcs.exe
+[Thread debugging using libthread_db enabled]
+[New Thread 2305843009219573216 (LWP 24119)]
+
+** ERROR **: file gc.c: line 137 (object_register_finalizer):
+assertion failed: (GC_base (obj) == (char*)obj - offset)
+aborting...
+
+Program received signal SIGABRT, Aborted.
+[Switching to Thread 2305843009219573216 (LWP 24119)]
+<signal handler called>
+(gdb) b mono_context_init
+Breakpoint 1 at 0x40000000001550e0: file appdomain.c, line 179.
+(gdb) r
+The program being debugged has been started already.
+Start it from the beginning? (y or n) y
+
+Starting program: /home/users/gramuser2/m-1.1.14/bin/mono
+/home/users/gramuser2/m-1.1.14/lib/mono/1.0/mcs.exe
+[Thread debugging using libthread_db enabled]
+[New Thread 2305843009219573216 (LWP 25829)]
+[Switching to Thread 2305843009219573216 (LWP 25829)]
+
+Breakpoint 1, mono_context_init (domain=0x60000000000a0e30) at
+appdomain.c:179
+179             class = mono_class_from_name (mono_defaults.corlib,
+"System.Runtime.Remoting.Contexts", "Context");
+(gdb) bt
+#0  mono_context_init (domain=0x60000000000a0e30) at appdomain.c:179
+#1  0x4000000000157810 in mono_runtime_init (domain=0x60000000000a0e30,
+    start_cb=@0x400000000035c480: 0x40000000002612e0
+<mono_thread_start_cb>,
+    attach_cb=@0x400000000035e7d0: 0x400000000026c810
+<mono_thread_attach_cb>) at appdomain.c:113
+#2  0x400000000026e210 in mini_init (filename=0x6000000fffb218ed
+"/home/users/gramuser2/m-1.1.14/lib/mono/1.0/mcs.exe")
+    at mini.c:10902
+#3  0x400000000001d710 in mono_main (argc=2, argv=0x6000000fffb21698)
+at driver.c:873
+#4  0x400000000001c690 in main (argc=2, argv=0x6000000fffb21698) at
+main.c:6
+(gdb) l
+174     mono_context_init (MonoDomain *domain)
+175     {
+176             MonoClass *class;
+177             MonoAppContext *context;
+178
+179             class = mono_class_from_name (mono_defaults.corlib,
+"System.Runtime.Remoting.Contexts", "Context");
+180             context = (MonoAppContext *) mono_object_new (domain,
+class);
+181             context->domain_id = domain->domain_id;
+182             context->context_id = 0;
+183             domain->default_context = context;
+(gdb) b mono_object_new
+Breakpoint 2 at 0x40000000000de6d0: file object.c, line 2342.
+(gdb) c
+Continuing.
+
+Breakpoint 2, mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2342
+2342    {
+(gdb) l
+2337     * so the consumer of this routine has to invoke any
+constructors on
+2338     * its own to initialize the object.
+2339     */
+2340    MonoObject *
+2341    mono_object_new (MonoDomain *domain, MonoClass *klass)
+2342    {
+2343            MONO_ARCH_SAVE_REGS;
+2344            return mono_object_new_specific (mono_class_vtable
+(domain, klass));
+2345    }
+2346
+(gdb) p domain
+$1 = (MonoDomain *) 0x60000000000a0e30
+(gdb) p *domain
+$2 = {domain = 0x60000000000b4f10, lock = {depth = 0, mutex =
+{__m_reserved = 0, __m_count = 0, __m_owner = 0x0,
+      __m_kind = 1, __m_lock = {__status = 0, __spinlock = 0}}}, mp =
+0x6000000000038a40, code_mp = 0x600000000003aa50,
+  env = 0x60000000000a2fb0, domain_assemblies = 0x0, entry_assembly =
+0x0, setup = 0x60000000000b4f80,
+  friendly_name = 0x6000000000044cc0 "mcs.exe", state = 0, ldstr_table
+= 0x60000000000a2f80,
+  class_vtable_hash = 0x600000000003aa70, proxy_vtable_hash =
+0x600000000003ab10, static_data_array = 0x60000000000b0f00,
+  jit_code_hash = 0x600000000003abb0, dynamic_code_hash = 0x0,
+delegate_hash_table = 0x0,
+  jit_info_table = 0x6000000000037298, type_hash = 0x60000000000a2f20,
+refobject_hash = 0x0, domain_id = 0,
+  search_path = 0x0, create_proxy_for_type_method = 0x0,
+private_invoke_method = 0x0, default_context = 0x0,
+  out_of_memory_ex = 0x0, null_reference_ex = 0x0, stack_overflow_ex =
+0x0, special_static_fields = 0x60000000000e5630,
+  jump_target_hash = 0x0, class_init_trampoline_hash =
+0x600000000003ac50, jump_trampoline_hash = 0x600000000003acf0,
+  jit_trampoline_hash = 0x600000000003ae30, delegate_trampoline_hash =
+0x600000000003aed0,
+  finalizable_objects_hash = 0x600000000003ad90, assemblies_lock =
+{depth = 0, mutex = {__m_reserved = 0, __m_count = 0,
+      __m_owner = 0x0, __m_kind = 1, __m_lock = {__status = 0,
+__spinlock = 0}}}}
+(gdb) l
+2347    /**
+2348     * mono_object_new_specific:
+2349     * @vtable: the vtable of the object that we want to create
+2350     *
+2351     * Returns: A newly created object with class and domain specified
+2352     * by @vtable
+2353     */
+2354    MonoObject *
+2355    mono_object_new_specific (MonoVTable *vtable)
+2356    {
+(gdb) frame
+#0  mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2342
+2342    {
+(gdb) l
+2337     * so the consumer of this routine has to invoke any
+constructors on
+2338     * its own to initialize the object.
+2339     */
+2340    MonoObject *
+2341    mono_object_new (MonoDomain *domain, MonoClass *klass)
+2342    {
+2343            MONO_ARCH_SAVE_REGS;
+2344            return mono_object_new_specific (mono_class_vtable
+(domain, klass));
+2345    }
+2346
+(gdb) bt
+#0  mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2342
+#1  0x4000000000155140 in mono_context_init
+(domain=0x60000000000a0e30) at appdomain.c:180
+#2  0x4000000000157810 in mono_runtime_init (domain=0x60000000000a0e30,
+    start_cb=@0x400000000035c480: 0x40000000002612e0
+<mono_thread_start_cb>,
+    attach_cb=@0x400000000035e7d0: 0x400000000026c810
+<mono_thread_attach_cb>) at appdomain.c:113
+#3  0x400000000026e210 in mini_init (filename=0x6000000fffb218ed
+"/home/users/gramuser2/m-1.1.14/lib/mono/1.0/mcs.exe")
+    at mini.c:10902
+#4  0x400000000001d710 in mono_main (argc=2, argv=0x6000000fffb21698)
+at driver.c:873
+#5  0x400000000001c690 in main (argc=2, argv=0x6000000fffb21698) at
+main.c:6
+(gdb) b mono_object_new_specific
+Breakpoint 3 at 0x40000000000de3b0: file object.c, line 2361.
+(gdb) c
+Continuing.
+
+Breakpoint 2, mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000bc980) at object.c:2342
+2342    {
+(gdb) bt
+#0  mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000bc980) at object.c:2342
+#1  0x40000000002ca6d0 in mono_type_get_object
+(domain=0x60000000000a0e30, type=0x60000000000f0740) at reflection.c:5516
+#2  0x40000000000dbfd0 in mono_class_vtable
+(domain=0x60000000000a0e30, class=0x60000000000f0650) at object.c:894
+#3  0x40000000000de700 in mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2344
+#4  0x0000000000000000 in ?? ()
+(gdb) l
+2337     * so the consumer of this routine has to invoke any
+constructors on
+2338     * its own to initialize the object.
+2339     */
+2340    MonoObject *
+2341    mono_object_new (MonoDomain *domain, MonoClass *klass)
+2342    {
+2343            MONO_ARCH_SAVE_REGS;
+2344            return mono_object_new_specific (mono_class_vtable
+(domain, klass));
+2345    }
+2346
+(gdb) c
+Continuing.
+
+Breakpoint 3, mono_object_new_specific (vtable=0x6000000000038d18) at
+object.c:2361
+2361            if (vtable->remote)
+(gdb) bt
+#0  mono_object_new_specific (vtable=0x6000000000038d18) at object.c:2361
+#1  0x40000000002ca6d0 in mono_type_get_object
+(domain=0x60000000000a0e30, type=0x60000000000f0740) at reflection.c:5516
+#2  0x40000000000dbfd0 in mono_class_vtable
+(domain=0x60000000000a0e30, class=0x60000000000f0650) at object.c:894
+#3  0x40000000000de700 in mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2344
+#4  0x0000000000000000 in ?? ()
+(gdb) l
+2356    {
+2357            MonoObject *o;
+2358
+2359            MONO_ARCH_SAVE_REGS;
+2360
+2361            if (vtable->remote)
+2362            {
+2363                    gpointer pa [1];
+2364                    MonoMethod *im =
+vtable->domain->create_proxy_for_type_method;
+2365
+(gdb) l 2350
+2345    }
+2346
+2347    /**
+2348     * mono_object_new_specific:
+2349     * @vtable: the vtable of the object that we want to create
+2350     *
+2351     * Returns: A newly created object with class and domain specified
+2352     * by @vtable
+2353     */
+2354    MonoObject *
+(gdb) bt
+#0  mono_object_new_specific (vtable=0x6000000000038d18) at object.c:2361
+#1  0x40000000002ca6d0 in mono_type_get_object
+(domain=0x60000000000a0e30, type=0x60000000000f0740) at reflection.c:5516
+#2  0x40000000000dbfd0 in mono_class_vtable
+(domain=0x60000000000a0e30, class=0x60000000000f0650) at object.c:894
+#3  0x40000000000de700 in mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2344
+#4  0x0000000000000000 in ?? ()
+(gdb) l
+2355    mono_object_new_specific (MonoVTable *vtable)
+2356    {
+2357            MonoObject *o;
+2358
+2359            MONO_ARCH_SAVE_REGS;
+2360
+2361            if (vtable->remote)
+2362            {
+2363                    gpointer pa [1];
+2364                    MonoMethod *im =
+vtable->domain->create_proxy_for_type_method;
+(gdb) l
+2365
+2366                    if (im == NULL) {
+2367                            MonoClass *klass =
+mono_class_from_name (mono_defaults.corlib,
+"System.Runtime.Remoting.Activation", "ActivationServices");
+2368
+2369                            if (!klass->inited)
+2370                                    mono_class_init (klass);
+2371
+2372                            im = mono_class_get_method_from_name
+(klass, "CreateProxyForType", 1);
+2373                            g_assert (im);
+2374                           
+vtable->domain->create_proxy_for_type_method = im;
+(gdb) l
+2375                    }
+2376
+2377                    pa [0] = mono_type_get_object (mono_domain_get
+(), &vtable->klass->byval_arg);
+2378
+2379                    o = mono_runtime_invoke (im, NULL, pa, NULL);
+2380                    if (o != NULL) return o;
+2381            }
+2382
+2383            return mono_object_new_alloc_specific (vtable);
+2384    }
+(gdb) n
+2383            return mono_object_new_alloc_specific (vtable);
+(gdb) p vtable
+$3 = (MonoVTable *) 0x6000000000038d18
+(gdb) p *vtable
+$4 = {klass = 0x60000000000bc980, gc_descr = 0x2000000000000001,
+domain = 0x60000000000a0e30, data = 0x0,
+  type = 0x60000000000b2fa0, max_interface_id = 14, rank = 0 '\0',
+remote = 0, initialized = 0, vtable = 0x6000000000038d48}
+(gdb) p *(vtable->klass)
+$5 = {image = 0x6000000000042610, enum_basetype = 0x0, element_class =
+0x60000000000bc980, cast_class = 0x60000000000bc980,
+  rank = 0 '\0', inited = 1, init_pending = 0, size_inited = 1,
+valuetype = 0, enumtype = 0, blittable = 0, unicode = 0,
+  wastypebuilder = 0, min_align = 8, packing_size = 0, ghcimpl = 1,
+has_finalize = 0, marshalbyref = 0, contextbound = 0,
+  delegate = 0, gc_descr_inited = 1, has_cctor = 0, dummy = 0,
+has_references = 1, has_static_refs = 0,
+  no_special_static_fields = 0, exception_type = 0 '\0',
+exception_data = 0x0, declsec_flags = 0,
+  parent = 0x60000000000bc140, nested_in = 0x0, nested_classes = 0x0,
+type_token = 33554832,
+  name = 0x2000000000806d55 "MonoType", name_space =
+0x2000000000805046 "System", supertypes = 0x60000000000bcac0,
+  idepth = 4, interface_count = 1, interface_id = 0, max_interface_id
+= 14, interface_offsets = 0x60000000000cc260,
+  interfaces = 0x60000000000bcb00, instance_size = 24, class_size = 0,
+vtable_size = 179, flags = 1056768, field = {
+    first = 865, count = 0}, method = {first = 4622, count = 60},
+property = {first = 0, count = 0}, event = {first = 0,
+    count = 0}, marshal_info = 0x0, fields = 0x0, properties = 0x0,
+events = 0x0, methods = 0x60000000000441a8, this_arg = {
+    data = {klass = 0x60000000000bc980, type = 0x60000000000bc980,
+array = 0x60000000000bc980, method = 0x60000000000bc980,
+      generic_param = 0x60000000000bc980, generic_class =
+0x60000000000bc980}, attrs = 0, type = 18, num_mods = 0,
+    byref = 1, pinned = 0, modifiers = 0x60000000000bca6c}, byval_arg
+= {data = {klass = 0x60000000000bc980,
+      type = 0x60000000000bc980, array = 0x60000000000bc980, method =
+0x60000000000bc980,
+      generic_param = 0x60000000000bc980, generic_class =
+0x60000000000bc980}, attrs = 0, type = 18, num_mods = 0,
+    byref = 0, pinned = 0, modifiers = 0x60000000000bca7c},
+generic_class = 0x0, generic_container = 0x0,
+  reflection_info = 0x0, gc_descr = 0x2000000000000001, runtime_info =
+0x6000000000044388, vtable = 0x60000000000dee30}
+(gdb) p *(vtable->klass->name)
+$6 = 77 'M'
+(gdb) p (vtable->klass->name)
+$7 = 0x2000000000806d55 "MonoType"
+(gdb) n
+2384    }
+(gdb) n
+mono_type_get_object (domain=0x60000000000a0e30,
+type=0x60000000000f0740) at reflection.c:5516
+5516            res = (MonoReflectionType *)mono_object_new (domain,
+mono_defaults.monotype_class);
+(gdb) bt
+#0  mono_type_get_object (domain=0x60000000000a0e30,
+type=0x60000000000f0740) at reflection.c:5516
+#1  0x40000000000dbfd0 in mono_class_vtable
+(domain=0x60000000000a0e30, class=0x60000000000f0650) at object.c:894
+#2  0x40000000000de700 in mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2344
+#3  0x0000000000000000 in ?? ()
+(gdb) l
+5511                            mono_domain_unlock (domain);
+5512                            return klass->reflection_info;
+5513                    }
+5514            }
+5515            mono_class_init (klass);
+5516            res = (MonoReflectionType *)mono_object_new (domain,
+mono_defaults.monotype_class);
+5517            res->type = type;
+5518            mono_g_hash_table_insert (domain->type_hash, type, res);
+5519            mono_domain_unlock (domain);
+5520            return res;
+(gdb) n
+5517            res->type = type;
+(gdb)
+5516            res = (MonoReflectionType *)mono_object_new (domain,
+mono_defaults.monotype_class);
+(gdb)
+5518            mono_g_hash_table_insert (domain->type_hash, type, res);
+(gdb)
+5517            res->type = type;
+(gdb)
+5518            mono_g_hash_table_insert (domain->type_hash, type, res);
+(gdb)
+5519            mono_domain_unlock (domain);
+(gdb)
+5520            return res;
+(gdb)
+5521    }
+(gdb)
+mono_class_vtable (domain=0x60000000000a0e30,
+class=0x60000000000f0650) at object.c:894
+894             vt->type = mono_type_get_object (domain,
+&class->byval_arg);
+(gdb) bt
+#0  mono_class_vtable (domain=0x60000000000a0e30,
+class=0x60000000000f0650) at object.c:894
+#1  0x40000000000de700 in mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2344
+#2  0x0000000000000000 in ?? ()
+(gdb) l
+889
+890             /* make sure the the parent is initialized */
+891             if (class->parent)
+892                     mono_class_vtable (domain, class->parent);
+893
+894             vt->type = mono_type_get_object (domain,
+&class->byval_arg);
+895             if (class->contextbound)
+896                     vt->remote = 1;
+897             else
+898                     vt->remote = 0;
+(gdb) n
+898                     vt->remote = 0;
+(gdb)
+895             if (class->contextbound)
+(gdb)
+896                     vt->remote = 1;
+(gdb)
+898                     vt->remote = 0;
+(gdb)
+896                     vt->remote = 1;
+(gdb)
+898                     vt->remote = 0;
+(gdb)
+691     }
+(gdb)
+mono_object_new (domain=0x60000000000a0e30, klass=0x60000000000f0650)
+at object.c:2344
+2344            return mono_object_new_specific (mono_class_vtable
+(domain, klass));
+(gdb) bt
+#0  mono_object_new (domain=0x60000000000a0e30,
+klass=0x60000000000f0650) at object.c:2344
+#1  0x40000000000de700 in mono_object_new (domain=0x6000000000009860,
+klass=0x60000000000a0e30) at object.c:2344
+#2  0x0000000000000000 in ?? ()
+(gdb) l
+2339     */
+2340    MonoObject *
+2341    mono_object_new (MonoDomain *domain, MonoClass *klass)
+2342    {
+2343            MONO_ARCH_SAVE_REGS;
+2344            return mono_object_new_specific (mono_class_vtable
+(domain, klass));
+2345    }
+2346
+2347    /**
+2348     * mono_object_new_specific:
+(gdb) n
+2345    }
+(gdb)
+mono_object_new (domain=<value optimized out>,
+klass=0x60000000000f0650) at object.c:2344
+2344            return mono_object_new_specific (mono_class_vtable
+(domain, klass));
+(gdb) n
+mono_object_new_specific (vtable=0x6000000000039ee8) at object.c:2356
+2356    {
+(gdb)
+2361            if (vtable->remote)
+(gdb)
+2364                    MonoMethod *im =
+vtable->domain->create_proxy_for_type_method;
+(gdb)
+2356    {
+(gdb)
+
+Breakpoint 3, mono_object_new_specific (vtable=0x6000000000039ee8) at
+object.c:2361
+2361            if (vtable->remote)
+(gdb) n
+2383            return mono_object_new_alloc_specific (vtable);
+(gdb)
+
+** ERROR **: file gc.c: line 137 (object_register_finalizer):
+assertion failed: (GC_base (obj) == (char*)obj - offset)
+aborting...
+
+Program received signal SIGABRT, Aborted.
+<signal handler called>
+(gdb) bt
+#0  <signal handler called>
+#1  0x00000000000000a0 in ?? ()
+#2  0x0000000000000170 in ?? ()
+#3  0x0000000000000000 in ?? ()


More information about the mono-bugs mailing list