[Mono-bugs] [Bug 535395] New: Mono compiler crash on two-level 'using' alias.

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Aug 28 18:44:10 EDT 2009


http://bugzilla.novell.com/show_bug.cgi?id=535395


           Summary: Mono compiler crash on two-level 'using' alias.
    Classification: Mono
           Product: Mono: Compilers
           Version: 2.4.x
          Platform: x86-64
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: kannan at cakoose.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.13)
Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13

Versions:
  OS: Ubuntu 9.04 (Jaunty)
  Mono: Monoxide package: mono-devel 2.4.2.3+dfsg-1~dhx1~jaunty1
  CSC: Mono C# compiler version 2.4.2.3

-------------------------------------
Code that causes CSC to crash (BinaryWriters.cs):

   using C = Cks.Runtime.Data;
   using BigInteger = C.BigInteger;  // <--- this seems to be the issue

   namespace Cks.Runtime
   {
      public abstract class BinaryWriter<T>
      {
         public abstract void Write(T Value);
      }

      public class Nat : BinaryWriter<BigInteger>
      {
         public override void Write(BigInteger v) {}
      }
   }

   namespace Cks.Runtime.Data
   {
      public class BigInteger {}
   }

-------------------------------------
csc BinaryWriters.cs

   Unhandled Exception: System.NullReferenceException: Object reference not set
to an instance of an object
     at Mono.CSharp.SimpleName.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.MemberAccess.ResolveNamespaceOrType (IResolveContext rc,
Boolean silent) [0x00000] 
     at Mono.CSharp.MemberAccess.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.MemberAccess.ResolveNamespaceOrType (IResolveContext rc,
Boolean silent) [0x00000] 
     at Mono.CSharp.MemberAccess.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.NamespaceEntry+LocalUsingAliasEntry.Resolve
(IResolveContext rc) [0x00000] 
     at Mono.CSharp.NamespaceEntry.Lookup (Mono.CSharp.DeclSpace ds,
System.String name, Location loc, Boolean ignore_cs0104) [0x00000] 
     at Mono.CSharp.NamespaceEntry.LookupNamespaceOrType (Mono.CSharp.DeclSpace
ds, System.String name, Location loc, Boolean ignore_cs0104) [0x00000] 
     at Mono.CSharp.DeclSpace.LookupNamespaceOrType (System.String name,
Location loc, Boolean ignore_cs0104) [0x00000] 
     at Mono.CSharp.SimpleName.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.MemberAccess.ResolveNamespaceOrType (IResolveContext rc,
Boolean silent) [0x00000] 
     at Mono.CSharp.MemberAccess.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.NamespaceEntry+LocalUsingAliasEntry.Resolve
(IResolveContext rc) [0x00000] 
     at Mono.CSharp.NamespaceEntry.Lookup (Mono.CSharp.DeclSpace ds,
System.String name, Location loc, Boolean ignore_cs0104) [0x00000] 
     at Mono.CSharp.NamespaceEntry.LookupNamespaceOrType (Mono.CSharp.DeclSpace
ds, System.String name, Location loc, Boolean ignore_cs0104) [0x00000] 
     at Mono.CSharp.DeclSpace.LookupNamespaceOrType (System.String name,
Location loc, Boolean ignore_cs0104) [0x00000] 
     at Mono.CSharp.SimpleName.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.Expression.ResolveAsBaseTerminal (IResolveContext ec,
Boolean silent) [0x00000] 
     at Mono.CSharp.Expression.ResolveAsTypeTerminal (IResolveContext ec,
Boolean silent) [0x00000] 
     at Mono.CSharp.TypeArguments.Resolve (IResolveContext ec) [0x00000] 
     at Mono.CSharp.GenericTypeExpr.DoResolveAsTypeStep (IResolveContext ec)
[0x00000] 
     at Mono.CSharp.TypeExpr.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.SimpleName.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000] 
     at Mono.CSharp.Expression.ResolveAsBaseTerminal (IResolveContext ec,
Boolean silent) [0x00000] 
     at Mono.CSharp.TypeContainer.ResolveBaseTypes (Mono.CSharp.TypeExpr&
base_class) [0x00000] 
     at Mono.CSharp.Class.ResolveBaseTypes (Mono.CSharp.TypeExpr& base_class)
[0x00000] 
     at Mono.CSharp.TypeContainer.DefineBaseTypes () [0x00000] 
     at Mono.CSharp.TypeContainer.DefineType () [0x00000] 
     at Mono.CSharp.RootContext.ResolveTree () [0x00000] 
     at Mono.CSharp.Driver.Compile () [0x00000] 
     at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] 

-------------------------------------
Code that doesn't cause CSC to crash:

1. Remove "using BigInteger = C.BigInteger"
2. Replace the two references to "BigInteger" with "C.BigInteger" in the code.

   using C = Cks.Runtime.Data;

   namespace Cks.Runtime
   {
      public abstract class BinaryWriter<T>
      {
         public abstract void Write(T Value);
      }

      public class Nat : BinaryWriter<C.BigInteger>
      {
         public override void Write(C.BigInteger v) {}
      }
   }

   namespace Cks.Runtime.Data
   {
      public class BigInteger {}
   }


Reproducible: Always

-- 
Configure bugmail: http://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