[Mono-bugs] [Bug 633674] New: (d)mcs crash when using lots of generic types in an IEnumerable generator method

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Aug 23 09:44:34 EDT 2010


https://bugzilla.novell.com/show_bug.cgi?id=633674

https://bugzilla.novell.com/show_bug.cgi?id=633674#c0


           Summary: (d)mcs crash when using lots of generic types in an
                    IEnumerable generator method
    Classification: Mono
           Product: Mono: Compilers
           Version: SVN
          Platform: Other
        OS/Version: OES - Linux
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: jeremie.laval at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4
(KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4

(d)mcs crash with the following stack trace:

Internal compiler error at fail-generic.cs(24,41):: exception caught while
emitting MethodBuilder [<GetEnumerable>c__Iterator0`3::MoveNext]

Unhandled Exception: System.ArgumentException: The specified field must be
declared on a generic type definition.
Parameter name: field
  at System.Reflection.Emit.TypeBuilder.GetField (System.Type type,
System.Reflection.FieldInfo field) [0x00072] in
/home/jeremie/mono/mono/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs:1893 
  at Mono.CSharp.FieldSpec.GetMetaInfo () [0x0002d] in
/home/jeremie/mono/mono/mcs/mcs/field.cs:292 
  at Mono.CSharp.EmitContext.Emit (OpCode opcode, Mono.CSharp.FieldSpec field)
[0x00023] in /home/jeremie/mono/mono/mcs/mcs/codegen.cs:468 
  at Mono.CSharp.FieldExpr.Emit (Mono.CSharp.EmitContext ec, Boolean
leave_copy) [0x00106] in /home/jeremie/mono/mono/mcs/mcs/ecore.cs:4680 
  at Mono.CSharp.FieldExpr.Emit (Mono.CSharp.EmitContext ec) [0x00000] in
/home/jeremie/mono/mono/mcs/mcs/ecore.cs:4728 
  at Mono.CSharp.Expression.EmitBranchable (Mono.CSharp.EmitContext ec, Label
target, Boolean on_true) [0x00000] in
/home/jeremie/mono/mono/mcs/mcs/ecore.cs:521 
  at Mono.CSharp.Binary.EmitBranchable (Mono.CSharp.EmitContext ec, Label
target, Boolean on_true) [0x00163] in
/home/jeremie/mono/mono/mcs/mcs/expression.cs:3479 
  at Mono.CSharp.If.DoEmit (Mono.CSharp.EmitContext ec) [0x00054] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:229 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000c] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:67 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x0004d] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2386 
  at Mono.CSharp.Do.DoEmit (Mono.CSharp.EmitContext ec) [0x00034] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:314 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000c] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:67 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x0004d] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2386 
  at Mono.CSharp.While.DoEmit (Mono.CSharp.EmitContext ec) [0x000b3] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:430 
  at Mono.CSharp.While.Emit (Mono.CSharp.EmitContext ec) [0x00000] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:446 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x0004d] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2386 
  at Mono.CSharp.TryFinally.EmitTryBody (Mono.CSharp.EmitContext ec) [0x00000]
in /home/jeremie/mono/mono/mcs/mcs/statement.cs:4663 
  at Mono.CSharp.ExceptionStatement.DoEmit (Mono.CSharp.EmitContext ec)
[0x000d1] in /home/jeremie/mono/mono/mcs/mcs/statement.cs:3957 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000c] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:67 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.Iterator.EmitMoveNext (Mono.CSharp.EmitContext ec,
Mono.CSharp.Block original_block) [0x00197] in
/home/jeremie/mono/mono/mcs/mcs/iterators.cs:681 
  at Mono.CSharp.IteratorStatement.DoEmit (Mono.CSharp.EmitContext ec)
[0x00000] in /home/jeremie/mono/mono/mcs/mcs/iterators.cs:154 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000c] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:67 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2220 
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x0001e] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2230 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x0004d] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2386 
  at Mono.CSharp.ToplevelBlock.Emit (Mono.CSharp.EmitContext ec) [0x00030] in
/home/jeremie/mono/mono/mcs/mcs/statement.cs:2939 
  at Mono.CSharp.MethodData.Emit (Mono.CSharp.DeclSpace parent) [0x000d1] in
/home/jeremie/mono/mono/mcs/mcs/method.cs:1878 
  at Mono.CSharp.MethodOrOperator.Emit () [0x001a9] in
/home/jeremie/mono/mono/mcs/mcs/method.cs:612 
  at Mono.CSharp.Method.Emit () [0x0010d] in
/home/jeremie/mono/mono/mcs/mcs/method.cs:1120

Reproducible: Always

Steps to Reproduce:
Try to compile attached test case (e.g. dmcs /t:library fail-generic.cs)
Actual Results:  
Compiler crash

Expected Results:  
Successful compilation

-- 
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