[Mono-bugs] [Bug 599469] New: Generic class with nested class causes mono crash (with test case)

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Apr 24 10:03:30 EDT 2010



           Summary: Generic class with nested class causes mono crash
                    (with test case)
    Classification: Mono
           Product: Mono: Runtime
           Version: 2.6.x
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: JIT
        AssignedTo: lupus at novell.com
        ReportedBy: ohh at scisoft.dk
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:
Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)

I am making heavy uses of generics and nested types. I have managed to produce
a test case, which crashes on the mono runtime (2.6.4) but executes fine on

Reproducible: Always

Steps to Reproduce:
Simply build and execute the following small file:

-bash-4.0$ cat test.cs
public class Grid<CT>
        where CT : Grid<CT>.GPD.GC, new()
        public abstract class GPD
                public GPD()
                        ctInst = new CT();

                public readonly CT ctInst;

                public abstract class GC

public class H : Grid<H.MyCT>.GPD
        public class MyCT : GC
                // When no explicit default constructor is present GMCS fails
to compile the file.
                // When it is present the execution crashes on mono.
                public MyCT () {}

public class TheTest
        public static void Main (string[] args)
                new H();
-bash-4.0$ gmcs test.cs
-bash-4.0$ mono test.exe

Actual Results:  
The mono runtime crashes with this error:
-bash-4.0$ mono test.exe

** (test.exe:22729): WARNING **: mono_class_from_mono_type: implement me 0x00

ERROR:class.c:4757:mono_class_from_mono_type: code should not be reached

Native stacktrace:

        mono [0x80c6a44]
        /lib/i686/nosegneg/libc.so.6(gsignal+0x51) [0xb7cbe9a1]
        /lib/i686/nosegneg/libc.so.6(abort+0x17a) [0xb7cc032a]
        /lib/libglib-2.0.so.0(g_assertion_message+0x12d) [0xb7ee14dd]
        mono(mono_class_from_mono_type+0x62) [0x8195182]
        mono [0x81989dc]
        mono(mono_class_get_full+0x16f) [0x819798f]
        mono(mono_metadata_load_generic_param_constraints+0xf9) [0x8174f09]
        mono [0x8197e5b]
        mono [0x8197f9a]
        mono(mono_class_get_full+0xf9) [0x8197919]
        mono(mono_class_get+0x20) [0x81979d0]
        mono [0x817929e]
        mono(mono_metadata_parse_type_full+0xe6) [0x8178546]
        mono(mono_metadata_parse_type+0x36) [0x8179006]
        mono [0x817935d]
        mono(mono_type_create_from_typespec+0xc6) [0x8179636]
        mono [0x8197746]
        mono(mono_class_get_full+0x160) [0x8197980]
        mono [0x8197d13]
        mono(mono_class_get_full+0xf9) [0x8197919]
        mono(mono_class_get+0x20) [0x81979d0]
        mono [0x818d8bb]
        mono(mono_get_method_full+0x9f) [0x818d9cf]
        mono [0x8076db6]
        mono [0x805f0a8]
        mono [0x8060870]
        mono [0x806113f]
        mono(mono_runtime_exec_main+0xde) [0x810f84e]
        mono(mono_runtime_run_main+0x15a) [0x8111aba]
        mono(mono_main+0x1a9b) [0x80afb0b]
        mono [0x8058795]
        /lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6) [0xb7ca9a86]
        mono [0x80586d1]

Debug info from gdb:

Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.


Expected Results:  
On Microsoft .NET the program runs and terminates without any output:

C:\Users\ohh\work\mono>csc Test.cs
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.4016
til Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. Alle rettigheder forbeholdes.



Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

More information about the mono-bugs mailing list