[Mono-bugs] [Bug 424012] New: gmcs crashes on compiling generics with multiple constraints

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Sep 6 01:25:10 EDT 2008


           Summary: gmcs crashes on compiling generics with multiple
           Product: Mono: Compilers
           Version: unspecified
          Platform: x86
        OS/Version: Windows XP
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: vorlon_ra at yahoo.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: Other

Description of Problem:
gmcs crashes on compiling the attached source file

Steps to reproduce the problem:

P:\>gmcs --version
Mono C# compiler version

P:\>gmcs -target:library a.cs

Unhandled Exception: Mono.CSharp.InternalErrorException: a.cs(16,21):
Test.Baz.Method<T,V>() ---> System.IndexOutOfRangeException: Array index is out
of range.
  at Mono.CSharp.Constraints.CheckInterfaceMethod
(Mono.CSharp.GenericConstraints gc) [0x00000]
  at Mono.CSharp.TypeParameter.DefineType (IResolveContext ec,
System.Reflection.Emit.MethodBuilder builder, System.Reflection.MethodInfo
implementing, Boolean is_override) [0x00000]
  at Mono.CSharp.GenericMethod.DefineType (Mono.CSharp.EmitContext ec,
System.Reflection.Emit.MethodBuilder mb, System.Reflection.MethodInfo
implementing, Boolean is_override) [0x00000]
  at Mono.CSharp.MethodData.Define (Mono.CSharp.DeclSpace parent) [0x00000]
  at Mono.CSharp.MethodOrOperator.Define () [0x00000]
  at Mono.CSharp.Method.Define () [0x00000]
  at Mono.CSharp.TypeContainer+MemberCoreArrayList.DefineContainerMembers ()
[0x00000] --- End of innerexception stack trace ---

  at Mono.CSharp.TypeContainer+MemberCoreArrayList.DefineContainerMembers ()
  at Mono.CSharp.TypeContainer.DefineContainerMembers
(Mono.CSharp.MemberCoreArrayList mcal) [0x00000]
  at Mono.CSharp.Class.DefineContainerMembers (Mono.CSharp.MemberCoreArrayList
list) [0x00000]
  at Mono.CSharp.TypeContainer.DoDefineMembers () [0x00000]
  at Mono.CSharp.Class.DoDefineMembers () [0x00000]
  at Mono.CSharp.TypeContainer.DefineMembers () [0x00000]
  at Mono.CSharp.RootContext.PopulateTypes () [0x00000]
  at Mono.CSharp.Driver.MainDriver (System.String[] args) [0x00000]
  at Mono.CSharp.Driver.Main (System.String[] args) [0x00000]

Actual Results:
Unhandled exception

Expected Results:
gmcs should go through and produce a usable assembly

How often does this happen? 
If there are constraints on more than one generic argument, all the time

Additional Information:

namespace Test
    using System;

    public interface IFoo

    public interface IBar
        void Method<T, V>() where T : IFoo where V : T;

    public class Baz : IBar
        public void Method<T, V>() where T : IBar where V : T

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.

More information about the mono-bugs mailing list