https://bugzilla.novell.com/show_bug.cgi?id=675586
https://bugzilla.novell.com/show_bug.cgi?id=675586#c0 Summary: 2.10 regression: failure instantiate generic+nested Type paramter when constructing attribute Classification: Mono Product: Mono: Runtime Version: 2.10.x Platform: Macintosh OS/Version: Mac OS X 10.6 Status: NEW Severity: Normal Priority: P5 - None Component: generics AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20 If a parameter of type 'System.Type' is passed to an attribute constructor and the type is nested within the generic type, mono prints "Cannot load type" trace, then passes null into the attribute constructor, even though the type is valid. This situation produces no failure on ms.net 2.0/4.0 runtimes, and also works properly with mono 2.8.x runtime. I've constructed a small program that reproduces this bug. Reproducible: Always Steps to Reproduce: brian@brianmbp ~ $ mono --version [ 1 ] Mono JIT compiler version 2.10.1 (tarball Fri Feb 25 15:56:49 MST 2011) Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com TLS: normal SIGSEGV: normal Notification: Thread + polling Architecture: x86 Disabled: none Misc: debugger softdebug LLVM: yes(2.9svn-mono) GC: Included Boehm (with typed GC) brian@brianmbp ~ $ mcs --version Mono C# compiler version 2.10.1.0 brian@brianmbp ~ $ cat t.cs using System; using System.Reflection; public class ExtensionAttribute : Attribute { public readonly Type ExtendsType; public ExtensionAttribute(Type extendstype) { if (extendstype == null) throw new ArgumentNullException("extendstype"); ExtendsType = extendstype; } } public class Bar<T> { public class Baz { } } [Extension(typeof(Bar<string>.Baz))] public class Extends_Bar_string_Baz { } public static class Foo { public static void Main(string[] args) { foreach (var type in Assembly.GetExecutingAssembly().GetTypes()) { type.GetCustomAttributes(typeof(ExtensionAttribute), false); } } } brian@brianmbp ~ $ mcs t.cs brian@brianmbp ~ $ mono t.exe Cannot load type 'Bar`1+.Baz[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' Unhandled Exception: System.ArgumentNullException: Argument cannot be null. Parameter name: extendstype at ExtensionAttribute..ctor (System.Type extendstype) [0x00000] in <filename unknown>:0 at (wrapper managed-to-native) System.MonoCustomAttrs:GetCustomAttributesInternal (System.Reflection.ICustomAttributeProvider,System.Type,bool) at System.MonoCustomAttrs.GetCustomAttributesBase (ICustomAttributeProvider obj, System.Type attributeType) [0x00000] in <filename unknown>:0 at System.MonoCustomAttrs.GetCustomAttributes (ICustomAttributeProvider obj, System.Type attributeType, Boolean inherit) [0x00000] in <filename unknown>:0 at System.MonoType.GetCustomAttributes (System.Type attributeType, Boolean inherit) [0x00000] in <filename unknown>:0 at Foo.Main (System.String[] args) [0x00000] in <filename unknown>:0 brian@brianmbp ~ $ echo $? 1 Actual Results: test program prints "Cannot load type" trace then throws ArgumentNullException during attribute construction. Expected Results: test program exits with status=0 without printing anything. -- Configure bugmail: https://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
