[Mono-bugs] [Bug 72544][Wis] Changed - mcs crashes with Mono.CSharp.InternalErrorException

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Sat, 12 Feb 2005 22:52:54 -0500 (EST)


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 miguel@ximian.com.

http://bugzilla.ximian.com/show_bug.cgi?id=72544

--- shadow/72544	2005-02-12 20:33:19.000000000 -0500
+++ shadow/72544.tmp.20890	2005-02-12 22:52:54.000000000 -0500
@@ -1,14 +1,14 @@
 Bug#: 72544
 Product: Mono: Compilers
 Version: 1.1
-OS: 
+OS: unknown
 OS Details: ubuntu/ppc hoary
 Status: NEW   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Wishlist
 Component: C#
 AssignedTo: mono-bugs@ximian.com                            
 ReportedBy: grompf@sublimeintervention.com               
 QAContact: mono-bugs@ximian.com
 TargetMilestone: ---
@@ -28,6 +28,32 @@
                 IntPtr g;
 
                 Blah (out g);
                 return (int) g;
         }
 }
+
+------- Additional Comments From miguel@ximian.com  2005-02-12 22:52 -------
+This is crashing because of revision 40402:
+
+        Fix #52586, cs0121-4.cs.
+        * decl.cs (MemberCache.DeepCopy): Rename from SetupCache.  Take
+        and return a hashtable.
+        (MemberCache.ClearDeclaredOnly): New.
+        (MemberCache.MemberCache): Update to change.  Make a deep copy of
+        the method_hash of a base type too.
+        (MemberCache.AddMethods): Adapt to having a deep copy of the base
+        type methods.  Overwrite entries with the same MethodHandle so
+        that the ReflectedType is correct.  The process leaves in base
+        virtual functions and their overrides as distinct entries.
+        (CacheEntry): Now a class instead of a struct.  It shouldn't alter
+        matters since it was boxed in a ArrayList before.
+        (CacheEntry.Member, CacheEntry.EntryType): Remove 'readonly'
+        modifier.
+        * expression.cs (Invocation.BetterFunction): Simplify.  Handle the
+        case of a virtual function and its override (choose the overload
+        as better).
+        (Invocation.OverloadResolve): Avoid 'override' members during
+        'applicable_type' calculation.
+
+The code is buggy, but we should flag the error, and not crash.
+