[Mono-bugs] [Bug 75331][Wis] New - [GMCS] strange difference in
loading mono generated dll and its reassembled version
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Mon Jun 20 16:20:11 EDT 2005
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 nazgul at omega.pl.
http://bugzilla.ximian.com/show_bug.cgi?id=75331
--- shadow/75331 2005-06-20 16:20:11.000000000 -0400
+++ shadow/75331.tmp.18894 2005-06-20 16:20:11.000000000 -0400
@@ -0,0 +1,114 @@
+Bug#: 75331
+Product: Mono: Runtime
+Version: 1.0
+OS:
+OS Details: mono svn
+Status: NEW
+Resolution:
+Severity:
+Priority: Wishlist
+Component: io-layer
+AssignedTo: mono-bugs at ximian.com
+ReportedBy: nazgul at omega.pl
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: [GMCS] strange difference in loading mono generated dll and its reassembled version
+
+Please fill in this template when reporting a bug, unless you know what you
+are doing.
+Description of Problem:
+We came into a very strange issue. Assembly generated with nemerle (mono
+S.R.E) causes assertion in mono runtime, but after reassembling it (the IL
+is identicall) on MS.NET it runs ok.
+
+The t.exe was compiled with csc from
+class C : IComparable <C> {
+ int IComparable<C>.CompareTo (C x) { return 1; }
+}
+class M {
+ static void Main () {
+ NemerleMap<C,int> y = new NemerleMap<C,int> ();
+ y.Add (new C(), 1);
+ }
+}
+
+tlib1.dll is compiled from nemerle
+ public interface IComparable ['a]
+ {
+ CompareTo(x : 'a) : int;
+ }
+ internal struct NodeNem ['a, 'b] : IComparable [NodeNem ['a, 'b]]
+ {
+ public x : int;
+
+ public CompareTo (x : NodeNem ['a, 'b]) : int
+ { 1 }
+
+ public this (k : 'a, v : 'b)
+ { }
+ }
+
+ public class NemerleMap ['a, 'b]
+ {
+ public Add (k : 'a, v : 'b) : void
+ {
+ def x = NodeNem (k, v);
+ null
+ }
+ }
+
+and tlib2.dll is generated by ildasm /text tlib1.dll > tlib2.il; ilasm
+/dll tlib2.il
+
+Steps to reproduce the problem:
+1. Unpack attached testcase
+2. run mono t.exe
+3. mv tlib2.dll tlib1.dll
+3. run mono t.exe
+
+Actual Results:
+** ERROR **: file metadata.c: line 1790
+(mono_metadata_parse_generic_param): assertion failed: (generic_context)
+aborting...
+Aborted
+
+clear run
+
+Expected Results:
+clear run
+clear run
+
+How often does this happen?
+Always
+
+Additional Information:
+Unfortunately I was not able to reproduce it with gmcs generated tlib (C#
+source is as follows)
+ public interface IComparable <a>
+ {
+ int CompareTo(a x);
+ }
+ internal struct NodeNem <a, b> : IComparable <NodeNem <a, b> >
+ {
+ public int x;
+
+ int IComparable<NodeNem<a,b>>.CompareTo (NodeNem <a, b> x)
+ { return 1; }
+
+ public NodeNem (a k, b v)
+ { x = 1; }
+ }
+
+ public class NemerleMap <a, b>
+ {
+ public void Add (a k, b v)
+ {
+ NodeNem <a,b> x = new NodeNem <a,b> (k, v);
+ }
+ }
+
+
+Also I noticed, that changing struct to class in nemerle source made this
+error disappear...
More information about the mono-bugs
mailing list