[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.
+