[prev in list] [next in list] [prev in thread] [next in thread]
List: mono-devel-list
Subject: Re: [Mono-dev] Mono fails to run binaries produced with .NET
From: "Gert Driesen" <gert.driesen () telenet ! be>
Date: 2007-04-26 17:39:38
Message-ID: 20070426173940.6CF99230114 () adicia ! telenet-ops ! be
[Download RAW message or body]
Alex,
Please submit a bug report for this.
Gert
-----Original Message-----
From: mono-devel-list-bounces@lists.ximian.com
[mailto:mono-devel-list-bounces@lists.ximian.com] On Behalf Of Bitprox
Development
Sent: donderdag 26 april 2007 16:16
To: mono-devel-list@lists.ximian.com
Subject: [Mono-dev] Mono fails to run binaries produced with .NET
C#compiler.
Hi,
I am experiencing a problem when I try to run the code compiled using the
.NET Framework on the mono runtime. The same code runs fine when executed on
.NET Framework. However when I compile the code using mono compiler mcs.exe
it runs fine on any runtime. When I started to examine the IL code emitted
by the csc.exe and mcs.exe I noticed the difference that leads to unbounded
recursion and then a StackOverflowException.
To reproduce the problem the following steps required:
1. The library. Contains code:
using System;
namespace MainSpace
{
public interface IA
{}
public interface IB
{ bool Test(); }
public interface IC : IA, IB
{}
public interface ID : IC
{}
public class A : IA
{}
public class AC : A, IC
{
public virtual bool Test()
{
Console.WriteLine("AC.Test()"); return true;
}
}
public class CD : AC, ID
{}
}
2. The executable. Contains code:
using System;
namespace ImplSpace
{
internal class TestImpl : MainSpace.CD
{
public override bool Test()
{ Console.WriteLine("TestImpl.Test()"); return base.Test(); }
}
public class TestClass
{
public static void Main()
{
TestImpl ti = new TestImpl();
ti.Test();
}
}
}
3. The library and the executable now should be compiled using the Microsoft
csc.exe
C# compiler.
4. When executed using the .NET Framework the output is expected:
TestImpl.Test()
AC.Test()
5. When executed using the Mono-1.2.3/4 for Win32 the output is unexpected:
TestImpl.Test()
...
TestImpl.Test()
Unhandled Exception: System.StackOverflowException: The requested operation
caus ed a stack overflow.
at ImplSpace.TestImpl.Test () [0x00000] ...
at ImplSpace.TestImpl.Test () [0x00000]
6. If the library and the executable are compiled using the Mono compiler
then no any
unexpected behaviour occurs.
The following IL code is generated using the csc.exe for the method
TestImpl.Test:
.method public hidebysig virtual instance bool
Test() cil managed
{
// Code size 21 (0x15)
.maxstack 1
.locals init ([0] bool CS$00000003$00000000)
IL_0000: ldstr "TestImpl.Test()"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ldarg.0
IL_000b: call instance bool [FaultTestLib]MainSpace.CD::Test()
IL_0010: stloc.0
IL_0011: br.s IL_0013
IL_0013: ldloc.0
IL_0014: ret
} // end of method TestImpl::Test
The following IL code is generated using the mcs.exe for the method
TestImpl.Test:
.method public hidebysig virtual instance bool
Test() cil managed
{
// Code size 17 (0x11)
.maxstack 8
IL_0000: ldstr "TestImpl.Test()"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ldarg.0
IL_000b: call instance bool [FaultTestLib]MainSpace.AC::Test()
IL_0010: ret
} // end of method TestImpl::Test
Now I can see that the the code produced by the csc.exe calls
MainSpace.CD::Test()
whereas code produced by the mcs.exe directly calls MainSpace.AC::Test().
Is there any possible solution for this kind of issue?
This is the first question of the Mono General FAQ: Q:" Can Mono run
binaries produced by Visual Studio?", A: "Yes, Mono can run binaries
produced by Visual Studio, there is no need to recompile."
My environment
OS: Windows
.NET: .NET Framework v1.1.4322
Mono: Mono-1.2.3/4 for Win32
Thanks,
Alex Makhotin
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic