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


           Summary: Internal compiler error with large methods
           Product: Mono: Compilers
           Version: SVN
          Platform: x86
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs@lists.ximian.com
        ReportedBy: [EMAIL PROTECTED]
         QAContact: mono-bugs@lists.ximian.com
          Found By: ---


Compiling a class that has a large method (approx 200 lines; many conditionals
and calls into other classes) triggers an internal compiler error.

I'll try turning this into a test case that I can share, but some info about
the class and the method being compiled:

  * The class inherits from Form, through two superclasses. E.g., Form -> A ->
B -> Class being compiled.

  * The method is the overridden OnLoad method. All classes in the chain
override it.

The error:

Internal compiler error at <<FOO>>.cs(1356,33):: exception caught while
emitting MethodBuilder [<<FOO>>::OnLoad]

Unhandled Exception: Mono.CSharp.InternalErrorException: Helper class already
defined!
  at Mono.CSharp.CompilerGeneratedClass.CheckMembersDefined () [0x00016] in
/home/csm/Source/mcs/mcs/anonymous.
cs:175
  at Mono.CSharp.RootScopeInfo.CaptureThis () [0x00017] in
/home/csm/Source/mcs/mcs/anonymous.cs:846
  at Mono.CSharp.This.ResolveBase (Mono.CSharp.EmitContext ec) [0x00112] in
/home/csm/Source/mcs/mcs/expression
cs:6121
  at Mono.CSharp.This.DoResolve (Mono.CSharp.EmitContext ec) [0x00000] in
/home/csm/Source/mcs/mcs/expression.c
s:6156
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00067] in /home/csm/Sou
rce/mcs/mcs/ecore.cs:472
  at Mono.CSharp.FieldExpr.DoResolve (Mono.CSharp.EmitContext ec, Boolean
lvalue_instance, Boolean out_access) [0x00083] in
/home/csm/Source/mcs/mcs/ecore.cs:4534 
  at Mono.CSharp.FieldExpr.DoResolve (Mono.CSharp.EmitContext ec) [0x00000] in
/home/csm/Source/mcs/mcs/ecore.cs:4507 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00067] in /home/csm/Source/mcs/mcs/ecore.cs:472 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec) [0x00000] in
/home/csm/Source/mcs/mcs/ecore.cs:499 
  at Mono.CSharp.ArrayCreation.ResolveArrayElement (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression element) [0x00000] in
/home/csm/Source/mcs/mcs/expression.cs:5474 
  at Mono.CSharp.ArrayCreation.CheckIndices (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList probe, Int32 idx, Boolean specified_dims)
[0x00155] in /home/csm/Source/mcs/mcs/expression.cs:5408 
  at Mono.CSharp.ArrayCreation.ResolveInitializers (Mono.CSharp.EmitContext ec)
[0x00051] in /home/csm/Source/mcs/mcs/expression.cs:5500 
  at Mono.CSharp.ArrayCreation.DoResolve (Mono.CSharp.EmitContext ec) [0x00056]
in /home/csm/Source/mcs/mcs/expression.cs:5564 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00067] in /home/csm/Source/mcs/mcs/ecore.cs:472 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec) [0x00000] in
/home/csm/Source/mcs/mcs/ecore.cs:499 
  at Mono.CSharp.MethodGroupExpr.VerifyArgumentsCompat (Mono.CSharp.EmitContext
ec, System.Collections.ArrayList& arguments, Int32 arg_count,
System.Reflection.MethodBase method, Boolean chose_params_expanded, Boolean
may_fail, Location loc) [0x001f4] in /home/csm/Source/mcs/mcs/ecore.cs:4347 
  at Mono.CSharp.MethodGroupExpr.OverloadResolve (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList& Arguments, Boolean may_fail, Location loc)
[0x00807] in /home/csm/Source/mcs/mcs/ecore.cs:4225 
  at Mono.CSharp.Invocation.DoResolveOverload (Mono.CSharp.EmitContext ec)
[0x00000] in /home/csm/Source/mcs/mcs/expression.cs:4402 
  at Mono.CSharp.Invocation.DoResolve (Mono.CSharp.EmitContext ec) [0x000d0] in
/home/csm/Source/mcs/mcs/expression.cs:4344 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00067] in /home/csm/Source/mcs/mcs/ecore.cs:472 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec) [0x00000] in
/home/csm/Source/mcs/mcs/ecore.cs:499 
  at Mono.CSharp.StringConcat.Emit (Mono.CSharp.EmitContext ec) [0x00007] in
/home/csm/Source/mcs/mcs/expression.cs:3245 
  at Mono.CSharp.FieldExpr.EmitAssign (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression source, Boolean leave_copy, Boolean prepare_for_load)
[0x0006f] in /home/csm/Source/mcs/mcs/ecore.cs:4787
  at Mono.CSharp.Assign.Emit (Mono.CSharp.EmitContext ec, Boolean is_statement)
[0x00082] in /home/csm/Source/mcs/mcs/assign.cs:577
  at Mono.CSharp.Assign.EmitStatement (Mono.CSharp.EmitContext ec) [0x00000] in
/home/csm/Source/mcs/mcs/assign.cs:593
  at Mono.CSharp.StatementExpression.DoEmit (Mono.CSharp.EmitContext ec)
[0x00000] in /home/csm/Source/mcs/mcs/statement.cs:703
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000d] in
/home/csm/Source/mcs/mcs/statement.cs:87
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00019] in
/home/csm/Source/mcs/mcs/statement.cs:2278
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x000c7] in
/home/csm/Source/mcs/mcs/statement.cs:2303 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00019] in
/home/csm/Source/mcs/mcs/statement.cs:2278
  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x000c7] in
/home/csm/Source/mcs/mcs/statement.cs:2303 
  at Mono.CSharp.EmitContext.EmitResolvedTopBlock (Mono.CSharp.ToplevelBlock
block, Boolean unreachable) [0x00006] in
/home/csm/Source/mcs/mcs/codegen.cs:813
  at Mono.CSharp.EmitContext.EmitTopBlock (IMethodData md,
Mono.CSharp.ToplevelBlock block) [0x00037] in
/home/csm/Source/mcs/mcs/codegen.cs:721
  at Mono.CSharp.MethodData.Emit (Mono.CSharp.DeclSpace parent) [0x0009e] in
/home/csm/Source/mcs/mcs/class.cs:5457
  at Mono.CSharp.Method.Emit () [0x0009d] in
/home/csm/Source/mcs/mcs/class.cs:4567


-- 
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  -  mono-bugs@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to