[Mono-bugs] [Bug 23778] Changed - the jit miscompiles call opcode for MarshalByRefObject derived classes
bugzilla-daemon@rocky.ximian.com
bugzilla-daemon@rocky.ximian.com
29 Apr 2002 09:51:02 -0000
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by lupus@ximian.com.
http://bugzilla.ximian.com/show_bug.cgi?id=23778
--- shadow/23778 Tue Apr 23 11:48:29 2002
+++ shadow/23778.tmp.28240 Mon Apr 29 05:51:02 2002
@@ -2,22 +2,23 @@
Product: Mono/Runtime
Version: unspecified
OS: other
OS Details:
Status: NEW
Resolution:
-Severity:
+Severity: Unknown
Priority: Major
Component: misc
AssignedTo: mono-bugs@ximian.com
ReportedBy: lupus@ximian.com
QAContact: mono-bugs@ximian.com
TargetMilestone: ---
URL:
Cc:
-Summary: the jit miscompiles Thread::Finalize()
+Summary: the jit miscompiles call opcode for MarshalByRefObject derived classes
+OtherBugsDependingOnThis: 23714
Running: mono --noinline --dump-asm --ncompile 1 --compile
System.Threading.Thread:Finalize corlib.dll
we get the following output:
00000000 <System.Threading.Thread_Finalize>:
@@ -37,6 +38,26 @@
At offset 0x13, Object::Finalize() is called like a virtual method, so
Thread::Finalize() is called again... resulting in a loop and a stack
overflow. The IL code has a correct call opcode there, not callvirt.
I was unable to reproduce the error with a simple test case that replicates
the IL code in Thread::Finalize().
+
+------- Additional Comments From lupus@ximian.com 2002-04-29 05:51 -------
+Test sample:
+class Base : System.MarshalByRefObject {
+ public virtual void method () {
+ }
+}
+
+class Derived : Base {
+ public override void method () {
+ base.method ();
+ }
+ static void Main() {
+ Derived d = new Derived ();
+ d.method ();
+ }
+}
+
+This has probably to do with the remoting support.
+