[Mono-bugs] [Bug 476358] New: Compiler crash in a Linq expression containing a join clause in wrong order

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Feb 17 02:51:15 EST 2009


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


           Summary: Compiler crash in a Linq expression containing a join
                    clause in wrong order
    Classification: Mono
           Product: Mono: Compilers
           Version: SVN
          Platform: PC
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: catanzariti at yahoo.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


User-Agent:       Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.6)
Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6

This is the code to compile :

using System.Collections.Generic;
using System.Linq;

namespace CompilerCrashTest
{
    public class A
    {
        public int id { get; set; }
    }

    public class B
    {
        public int id { get; set; }
    }

    public class LinqJoin
    {
        public LinqJoin()
        {
            IList<A> aList = new List<A>();
            IList<B> bList = new List<B>();

            // OK
            (from a in aList
             join b in bList on a.id equals b.id
             select a).ToList();

            // Compiler crash
            (from a in aList
             join b in bList on b.id equals a.id
             select a).ToList();
        }
    }
}

This is the error message :

Building: CompilerCrashTest (Debug)
Exécution de la compilation principale...
/opt/mono/bin/gmcs
"/out:/home/michael/dev/CompilerCrashTest/bin/Debug/CompilerCrashTest.exe"
"/r:System.Core.dll" /noconfig /nologo /warn:4 /debug:+ /debug:full /optimize-
/codepage:utf8 /define:"DEBUG" /t:exe
"/home/michael/dev/CompilerCrashTest/Main.cs"
"/home/michael/dev/CompilerCrashTest/AssemblyInfo.cs"
"/home/michael/dev/CompilerCrashTest/QueryCompiler.cs"
"/home/michael/dev/CompilerCrashTest/LinqJoin.cs" 
Exception caught by the compiler while compiling:
   Block that caused the problem begin at:
/home/michael/dev/CompilerCrashTest/LinqJoin.cs(30,43):
                     Block being compiled:
[/home/michael/dev/CompilerCrashTest/LinqJoin.cs(30,43):,/home/michael/dev/CompilerCrashTest/LinqJoin.cs(30,55):]
System.NullReferenceException: Object reference not set to an instance of an
object
Exception caught by the compiler while compiling:
   Block that caused the problem begin at:
/home/michael/dev/CompilerCrashTest/LinqJoin.cs(18,24):
                     Block being compiled:
[/home/michael/dev/CompilerCrashTest/LinqJoin.cs(21,25):,/home/michael/dev/CompilerCrashTest/LinqJoin.cs(21,55):]
System.NullReferenceException: Object reference not set to an instance of an
object


Unhandled Exception: Mono.CSharp.InternalErrorException:
/home/michael/dev/CompilerCrashTest/LinqJoin.cs(18,24):
CompilerCrashTest.LinqJoin.LinqJoin() ---> System.NullReferenceException:
Object reference not set to an instance of an object
  at Mono.CSharp.ToplevelParameterInfo.get_ParameterType () [0x00000] 
  at Mono.CSharp.ParameterReference.DoResolveBase (Mono.CSharp.EmitContext ec)
[0x00000] 
  at Mono.CSharp.ParameterReference.DoResolve (Mono.CSharp.EmitContext ec)
[0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.SimpleName.DoSimpleNameResolve (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression right_side, Boolean intermediate) [0x00000] 
  at Mono.CSharp.SimpleName.SimpleNameResolve (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression right_side, Boolean intermediate) [0x00000] 
  at Mono.CSharp.SimpleName.DoResolve (Mono.CSharp.EmitContext ec, Boolean
intermediate) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00000] 
  at Mono.CSharp.MemberAccess.DoResolve (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression right_side) [0x00000] 
  at Mono.CSharp.MemberAccess.DoResolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.SimpleName.DoSimpleNameResolve (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression right_side, Boolean intermediate) [0x00000] 
  at Mono.CSharp.SimpleName.SimpleNameResolve (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression right_side, Boolean intermediate) [0x00000] 
  at Mono.CSharp.SimpleName.DoResolve (Mono.CSharp.EmitContext ec, Boolean
intermediate) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00000] 
  at Mono.CSharp.MemberAccess.DoResolve (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression right_side) [0x00000] 
  at Mono.CSharp.MemberAccess.DoResolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.Return.DoResolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.ContextualReturn.DoResolve (Mono.CSharp.EmitContext ec)
[0x00000] 
  at Mono.CSharp.ExitStatement.Resolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.Block.Resolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.EmitContext.ResolveTopBlock (Mono.CSharp.EmitContext
anonymous_method_host, Mono.CSharp.ToplevelBlock block,
Mono.CSharp.ParametersCompiled ip, IMethodData md, System.Boolean& unreachable)
[0x00000] 
  --- End of inner exception stack trace ---
  at Mono.CSharp.TypeContainer.EmitConstructors () [0x00000] 
  at Mono.CSharp.TypeContainer.EmitType () [0x00000] 
  at Mono.CSharp.RootContext.EmitCode () [0x00000] 
  at Mono.CSharp.Driver.Compile () [0x00000] 
  at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] 



Reproducible: Always

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