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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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, + [EMAIL PROTECTED]: 0x40000000002612e0 +<mono_thread_start_cb>, + [EMAIL PROTECTED]: 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, + [EMAIL PROTECTED]: 0x40000000002612e0 +<mono_thread_start_cb>, + [EMAIL PROTECTED]: 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 ?? () _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
