[Mono-bugs] [Bug 347189] New: Cannot compile Berkeley DB for .NET

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sun Dec 9 14:15:33 EST 2007


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

User karl at waclawek.net added comment
https://bugzilla.novell.com/show_bug.cgi?id=347189#c347187

           Summary: Cannot compile Berkeley DB for .NET
           Product: Mono: Compilers
           Version: 1.2.6
          Platform: x86
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at ximian.com
        ReportedBy: karl at waclawek.net
         QAContact: mono-bugs at ximian.com
          Found By: ---


This was seen on Ubuntu 7.10 with Mono 1.2.6 preview 3.

Depending on the order of the source files passed to gmcs, the compiler crashes
with different kinds of exceptions. To reproduce:

1) Get source code from CVS: 
   cvs
-d:pserver:anonymous at libdb-dotnet.cvs.sourceforge.net:/cvsroot/libdb-dotnet
login

  hit Enter (empty password).

  cvs -z3
-d:pserver:anonymous at libdb-dotnet.cvs.sourceforge.net:/cvsroot/libdb-dotnet co
-P libdb-dotnet

2) cd to src directory

3) open a terminal and run xbuild libdb_dotNET45.csproj
This will report success, but there is no assembly generated (bug in xbuild, I
guess). Then copy the gmcs commandline generated by xbuild (and written to the
console) back into the terminal and apply the fix for xbuild bug #347187
(define symbols), the command line should look like this (quotes around the
defines symbols):

gmcs /noconfig /debug:full /debug+ /optimize- /out:bin/Debug/libdb_dotNET45.dll
Properties/AssemblyInfo45.cs DB_LOCK.cs DB_LOCK_WRAP.cs DB_LOG.cs
DB_LOG_WRAP.cs DB_MPOOL.cs DB.cs DB_ENV.cs DB_ENV_Wrap.cs DB_MPOOL_WRAP.cs
DB_SEQUENCE.cs DB_SEQUENCE_Wrap.cs DB_TXN.cs DB_TXN_Wrap.cs DB_Wrap.cs DBC.cs
DBC_Wrap.cs Common.cs DBT.cs LibDb.cs Util.cs XA.cs /target:library /unsafe+
/define:"TRACE;DEBUG;BDB_PACK8;BDB_4_5_20;_USE_32BIT_TIME_T"
/reference:/opt/mono-1.2.6/lib/mono/gac/System/2.1.0.0__b77a5c561934e089/System.dll
/warn:4

Running this will result in gmcs crashing with an unhandled exception:

Unhandled Exception: Mono.CSharp.InternalErrorException: DB_MPOOL.cs(111,16):
BerkeleyDb.DB_MPOOLFILE.fileid ---> System.NullReferenceException: Object
reference not set to an instance of an object
  at Mono.CSharp.Const.Define () [0x00000] 
  at Mono.CSharp.TypeContainer.FindMembers (MemberTypes mt, BindingFlags bf,
System.Reflection.MemberFilter filter, System.Object criteria) [0x00000] 
  at Mono.CSharp.TypeManager.MemberLookup_FindMembers (System.Type t,
MemberTypes mt, BindingFlags bf, System.String name, System.Boolean&
used_cache) [0x00000] 
  at Mono.CSharp.TypeManager.RealMemberLookup (System.Type invocation_type,
System.Type qualifier_type, System.Type queried_type, MemberTypes mt,
BindingFlags original_bf, System.String name, IList almost_match) [0x00000] 
  at Mono.CSharp.TypeManager.MemberLookup (System.Type invocation_type,
System.Type qualifier_type, System.Type queried_type, MemberTypes mt,
BindingFlags original_bf, System.String name, IList almost_match) [0x00000] 
  at Mono.CSharp.Expression.MemberLookup (System.Type container_type,
System.Type qualifier_type, System.Type queried_type, System.String name,
MemberTypes mt, BindingFlags bf, Location loc) [0x00000] 
  at Mono.CSharp.Expression.MemberLookup (System.Type container_type,
System.Type qualifier_type, System.Type queried_type, System.String name,
Location loc) [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.Expression.ResolveAsConstant (Mono.CSharp.EmitContext ec,
Mono.CSharp.MemberCore mc) [0x00000] 
  at Mono.CSharp.FixedField.Define () [0x00000] 
  at Mono.CSharp.TypeContainer+MemberCoreArrayList.DefineContainerMembers ()
[0x00000] --- End of inner exception stack trace ---

  at Mono.CSharp.TypeContainer+MemberCoreArrayList.DefineContainerMembers ()
[0x00000] 
  at Mono.CSharp.TypeContainer.DefineContainerMembers
(Mono.CSharp.MemberCoreArrayList mcal) [0x00000] 
  at Mono.CSharp.TypeContainer.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] 


Now, move the file Common.cs to another (earlier) position in the command line,
like this:

gmcs /noconfig /debug:full /debug+ /optimize- /out:bin/Debug/libdb_dotNET45.dll
Properties/AssemblyInfo45.cs Common.cs DB_LOCK.cs DB_LOCK_WRAP.cs DB_LOG.cs
DB_LOG_WRAP.cs DB_MPOOL.cs DB.cs DB_ENV.cs DB_ENV_Wrap.cs DB_MPOOL_WRAP.cs
DB_SEQUENCE.cs DB_SEQUENCE_Wrap.cs DB_TXN.cs DB_TXN_Wrap.cs DB_Wrap.cs DBC.cs
DBC_Wrap.cs DBT.cs LibDb.cs Util.cs XA.cs /target:library /unsafe+
/define:"TRACE;DEBUG;BDB_PACK8;BDB_4_5_20;_USE_32BIT_TIME_T"
/reference:/opt/mono-1.2.6/lib/mono/gac/System/2.1.0.0__b77a5c561934e089/System.dll
/warn:4

Recompile, gmcs crashes with another unhandled exception:

Unhandled Exception: Mono.CSharp.InternalErrorException: DB_Wrap.cs(2222,7):
BerkeleyDb.DbFile<D,C>.OpenCursor(BerkeleyDb.DB_TXN*,
DbFileCursor<C,D>.CreateFlags) ---> System.InvalidOperationException: Operation
is not valid due to the current state of the object
  at System.Type.GetGenericTypeDefinition () [0x00000] 
  at System.Reflection.Emit.TypeBuilder.GetGenericTypeDefinition () [0x00000] 
  at Mono.CSharp.ConstructedType..ctor (System.Type t,
Mono.CSharp.TypeArguments args, Location l) [0x00000] 
  at Mono.CSharp.MemberAccess.ResolveNamespaceOrType (IResolveContext rc,
Boolean silent) [0x00000] 
  at Mono.CSharp.MemberAccess.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.Parameter.Resolve (IResolveContext ec) [0x00000] 
  at Mono.CSharp.Parameters.Resolve (IResolveContext ec) [0x00000] 
  at Mono.CSharp.InterfaceMemberBase.DefineParameters (Mono.CSharp.Parameters
parameters) [0x00000] 
  at Mono.CSharp.MethodCore.CheckBase () [0x00000] 
  at Mono.CSharp.MethodOrOperator.CheckBase () [0x00000] 
  at Mono.CSharp.MethodOrOperator.Define () [0x00000] 
  at Mono.CSharp.Method.Define () [0x00000] 
  at Mono.CSharp.TypeContainer+MemberCoreArrayList.DefineContainerMembers ()
[0x00000] --- End of inner exception stack trace ---

  at Mono.CSharp.TypeContainer+MemberCoreArrayList.DefineContainerMembers ()
[0x00000] 
  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]


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