http://bugzilla.novell.com/show_bug.cgi?id=567109
http://bugzilla.novell.com/show_bug.cgi?id=567109#c0 Summary: segmentation violation while compiling a C# module that worked in 2.4.2.3 Classification: Mono Product: Mono: Runtime Version: 2.6.x Platform: Other OS/Version: Other Status: NEW Severity: Normal Priority: P5 - None Component: misc AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- Description of Problem: We are using Mono for a large hardware/software project. After upgrading to mono 2.6.1 we found a crashing bug when gmcs was trying to compile one of our modules. I'm attaching a fix for the null reference that occurs while compiling an Indexer contained within a Class. Unfortunately, I haven't yet extracted a test case out of the (large/interdependent) class that shows the problem. I hope that the developer for mono/metadata/reflection.c can look at this patch and I suspect they will already know that in some cases method->klass can be NULL. n: Here is the fix: --- mono-2.6.1.orig/mono/metadata/reflection.c 2009-12-17 01:48:22.000000000 -0800 +++ mono-2.6.1/mono/metadata/reflection.c 2009-12-23 12:13:54.000000000 -0800 @@ -8430,6 +8430,12 @@ if (method->is_inflated) method = ((MonoMethodInflated *) method)->declaring; + // kevinh - my test case is complex, but it used to compile fine with 2.4.2.3 + // I had to add the following two lines to get my failing code to not + // bomb out in the compiler + if(!method->klass) + return NULL; + if (method->klass->image->dynamic) { MonoCustomAttrInfo *res, *ainfo; int size; Here is the stack trace from the crash: Stacktrace: at (wrapper managed-to-native) System.MonoCustomAttrs.IsDefinedInternal (System.Reflection.ICustomAttributeProvider,System.Type) <0x0004b> at (wrapper managed-to-native) System.MonoCustomAttrs.IsDefinedInternal (System.Reflection.ICustomAttributeProvider,System.Type) <0x0004b> at System.MonoCustomAttrs.IsDefined (System.Reflection.ICustomAttributeProvider,System.Type,bool) <0x00067> at System.Reflection.ParameterInfo.IsDefined (System.Type,bool) <0x00023> at Mono.CSharp.ParametersImported.Create (System.Reflection.ParameterInfo[],System.Reflection.MethodBase) <0x00308> at Mono.CSharp.TypeManager.GetParameterData (System.Reflection.PropertyInfo) <0x000d7> at Mono.CSharp.MemberCache.FindMemberToOverride (System.Type,string,Mono.CSharp.AParametersCollection,Mono.CSharp.GenericMethod,bool) <0x00273> at Mono.CSharp.Indexer.ResolveBaseProperty () <0x00067> at Mono.CSharp.PropertyBase.FindOutBaseMethod (System.Type&) <0x0002f> at Mono.CSharp.InterfaceMemberBase.CheckBase () <0x0010f> at Mono.CSharp.Indexer.Define () <0x00269> at Mono.CSharp.TypeContainer/MemberCoreArrayList.DefineContainerMembers () <0x000af> at Mono.CSharp.TypeContainer.DefineContainerMembers (Mono.CSharp.TypeContainer/MemberCoreArrayList) <0x0001e> at Mono.CSharp.Class.DefineContainerMembers (Mono.CSharp.TypeContainer/MemberCoreArrayList) <0x00073> at Mono.CSharp.TypeContainer.DoDefineMembers () <0x00fd3> at Mono.CSharp.Class.DoDefineMembers () <0x0004f> at Mono.CSharp.TypeContainer.Define () <0x0002f> at Mono.CSharp.ClassOrStruct.Define () <0x00017> at Mono.CSharp.Class.Define () <0x0013f> at Mono.CSharp.RootContext.PopulateTypes () <0x00358> at Mono.CSharp.Driver.Compile () <0x007ab> at Mono.CSharp.Driver.Main (string[]) <0x000ab> at (wrapper runtime-invoke) <Module>.runtime_invoke_int_object (object,intptr,intptr,intptr) <0x00054> Thread 1 (Thread 0x7fb25d61e720 (LWP 22948)): #0 0x00007fb25c9405cb in read () from /lib/libpthread.so.0 #1 0x000000000048b638 in mono_handle_native_sigsegv (signal=<value optimized out>, ctx=<value optimized out>) at mini-exceptions.c:1809 #2 0x00000000004d440d in mono_arch_handle_altstack_exception (sigctx=0x7fb25d628c40, fault_addr=<value optimized out>, stack_ovf=0) at exceptions-amd64.c:879 #3 <signal handler called> #4 0x000000000056d6b6 in mono_custom_attrs_from_param (method=0x7fb255bf9a50, param=1) at reflection.c:8434 #5 0x00000000005247a6 in custom_attrs_defined_internal (obj=0x7fb255bf9a50, attr_type=0x1) at icall.c:7227 #6 0x0000000040a7429b in ?? () #7 0x000000000092e3f0 in ?? () #8 0x0000000000000000 in ?? () -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
