[Mono-bugs] [Bug 77774][Nor] Changed - amd64: Sigsegv with boo
interpreter
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Mon Mar 13 14:40:28 EST 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 miguel at ximian.com.
http://bugzilla.ximian.com/show_bug.cgi?id=77774
--- shadow/77774 2006-03-13 13:42:12.000000000 -0500
+++ shadow/77774.tmp.703 2006-03-13 14:40:28.000000000 -0500
@@ -1,17 +1,17 @@
Bug#: 77774
Product: Mono: Runtime
Version: 1.1
OS: unknown
OS Details: gentoo - amd64
-Status: REOPENED
+Status: NEW
Resolution:
Severity: Unknown
Priority: Normal
Component: JIT
-AssignedTo: lupus at ximian.com
+AssignedTo: vargaz at gmail.com
ReportedBy: psofa.psofa at gmail.com
QAContact: mono-bugs at ximian.com
TargetMilestone: ---
URL:
Cc:
Summary: amd64: Sigsegv with boo interpreter
@@ -167,6 +167,89 @@
/home/builder/t/install/lib/mono/gac/policy.0.5.Boo.Lang.resources/0.0.0.0_en-us_32c39770e9a21a67/policy.0.5.Boo.Lang.resources.dll
So it fails silently after that, although the source of the problem
seems to the be the earlier NullReference which does not happen on x86
+
+------- Additional Comments From miguel at ximian.com 2006-03-13 14:40 -------
+Update: building with the latest Boo (instead of the Boo I had on my
+box from packages) produces a crash:
+
+
+(gdb) mono_backtrace 10
+#0 0x40233ff0 in System.Type:get_Attributes () + 0x18 (0x40233fd8
+0x40233ff5) [0x2aaaab74be60 - tt.exe]#2 0x0000000000eb41f0 in ?? ()
+#3 0x00002aaaac2c0ed0 in ?? ()
+#4 0x0000000000000000 in ?? ()
+#4 0x40291d67 in System.Type:get_IsPublic () + 0x17 (0x40291d50
+0x40291d85) [0x2aaaab74be60 - tt.exe]#6 0x00002aaaac100c60 in ?? ()
+#7 0x00002aaaac3676c0 in ?? ()
+#7 0x4028bf62 in System.IO.SynchronizedWriter:WriteLine
+(string,object) + 0x4a (0x4028bf18 0x4028bf80) [0x2aaaab74be60 -
+tt.exe]#8 0x402919c2 in
+Boo.Lang.Compiler.Steps.InitializeNameResolutionService:OrganizeAssemblyTypes
+(System.Reflection.Assembly) + 0xc2 (0x40291900 0x40291a86)
+[0x2aaaab74be60 - tt.exe]#10 0x00002aaaabf3e258 in ?? ()
+
+(gdb) p mono_pmip (0x40233ff0)
+$19 = 0xec46f0 " System.Type:get_Attributes () + 0x18 (0x40233fd8
+0x40233ff5) [0x2aaaab74be60 - tt.exe]"
+(gdb) x/20i 0x40233fd8
+0x40233fd8: sub $0x18,%rsp
+0x40233fdc: mov %rdi,(%rsp)
+0x40233fe0: mov (%rsp),%rax
+0x40233fe4: mov %rax,%rdi
+0x40233fe7: mov (%rax),%rax
+0x40233fea: callq *0x578(%rax)
+0x40233ff0: add $0x18,%rsp
+0x40233ff4: retq
+
+The code for this chunk is in class/corlib/Type.cs, and it just
+delegates that to a virtual method in MonoType.cs.
+
+Now, the issue is that Boo has executed this code before a number of
+times, at least once before:
+
+I believe this is right:
+
+(gdb) x/g $rsp-20
+0x7fff(gdb) p *((MonoObject *)0x00002aaaac0a0f18)->vtable->klass
+$21 = {image = 0x6c0b30, enum_basetype = 0x0, element_class =
+0x879090, cast_class = 0x879090, 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 = 0, has_finalize = 0, marshalbyref = 1,
+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 = 0x751150,
+nested_in = 0x0, nested_classes = 0x0, type_token = 33555010,
+ name = 0x2aaaab8ee868 "SynchronizedWriter", name_space =
+0x2aaaab8ec4d4 "System.IO", supertypes = 0x8791d0, idepth = 4,
+ interface_count = 0, interface_id = 0, max_interface_id = 10,
+interface_offsets = 0x78379c, interfaces = 0x0, instance_size = 56,
+ class_size = 0, vtable_size = 50, flags = 1056768, field = {first =
+1535, count = 2}, method = {first = 7213, count = 42},
+ property = {first = 0, count = 0}, event = {first = 0, count = 0},
+marshal_info = 0x0, fields = 0x864790, properties = 0x0,
+ events = 0x0, methods = 0x864800, this_arg = {data = {klass =
+0x879090, type = 0x879090, array = 0x879090, method = 0x879090,
+ generic_param = 0x879090, generic_class = 0x879090}, attrs = 0,
+type = 18, num_mods = 0, byref = 1, pinned = 0,
+ modifiers = 0x87917c}, byval_arg = {data = {klass = 0x879090, type
+= 0x879090, array = 0x879090, method = 0x879090,
+ generic_param = 0x879090, generic_class = 0x879090}, attrs = 0,
+type = 18, num_mods = 0, byref = 0, pinned = 0,
+ modifiers = 0x87918c}, generic_class = 0x0, generic_container =
+0x0, reflection_info = 0x0, gc_descr = 0x3c00000000000001,
+ runtime_info = 0x864950, vtable = 0x87b510}
+ffffe8cc: 0x40017cd300002aaa
+
+It appears as if the vtable entry for 0x578 is empty:
+(gdb) x/g 0x00002aaaac0a0f18 + 0x578
+0x2aaaac0a1490: 0x0000000000000000
+
+This in Boo happens while looping over all the types returned by an
+assembly that seems to have been created internally (its called "input1").
+
+I am using Mono 1.1.13.4 for these tests.
More information about the mono-bugs
mailing list