[Mono-bugs] [Bug 76485][Maj] Changed - [GMCS] assertion failed in monodis

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Wed Jan 18 05:36:22 EST 2006


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 malekith at pld-linux.org.

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

--- shadow/76485	2006-01-16 11:21:01.000000000 -0500
+++ shadow/76485.tmp.11701	2006-01-18 05:36:22.000000000 -0500
@@ -42,6 +42,107 @@
 ------- Additional Comments From jankit at novell.com  2006-01-16 11:21 -------
 monodis seems to be working with Nemerle.dll fine. ilasm2(svn) can
 roundtrip it also now. But am not sure whether there might be any
 issues with the roundtripped assembly. It would be nice if nemerle's
 test-suite could be tried on this and let us know if there are issues
 with that. Thanks.
+
+------- Additional Comments From malekith at pld-linux.org  2006-01-18 05:36 -------
+So the good news: it works fine with the testsuite.
+
+There is a single tiny problem: monodis says special-name, while ilasm
+accepts only specialname. I think ilasm is right.
+
+However there are issues with PEVerify run on the resulting assemblies:
+
+[IL]: Error: [C:\cygwin\home\malekith\boot\Nemerle.dll :
+Nemerle.Collections.Set`1['a]::Sum['a]][offset 0x00000006] Unable to
+resolve token.
+[token  0x0200002F] Type load failed.
+2 Errors Verifying Nemerle.dll
+
+(similar errors occur in Nemerle.Compiler.dll).
+
+Offending method, when disassembled by MS ildasm:
+  .method public hidebysig instance class
+Nemerle.Collections.Set`1<!'\'a'>
+          Sum(class Nemerle.Collections.Set`1<!'\'a'> s) cil managed
+  {
+    // Code size       30 (0x1e)
+    .maxstack  4
+    .locals init (class Nemerle.Builtins.Function`3<!'\'a',class
+Nemerle.Collections.Tree/Node`1<!'\'a'>,
+             class Nemerle.Collections.Tree/Node`1<!'\'a'>> V_0)
+    IL_0000:  ldarg.1
+    IL_0001:  ldfld      class Nemerle.Collections.Tree/Node`1<!0>
+class Nemerle.Collections.Set`1<!'\'a'>::root
+    IL_0006:  ldarg.0
+    IL_0007:  ldfld      class Nemerle.Collections.Tree/Node`1<!0>
+class Nemerle.Collections.Set`1<!'\'a'>::root
+    IL_000c:  newobj     instance void class
+Nemerle.Collections.Set`1/_N__N_l10568_10578<!'\'a'>::.ctor()
+    IL_0011:  stloc.0
+    IL_0012:  ldloc.0
+    IL_0013:  call       !!1
+Nemerle.Collections.Tree::Fold<!'\'a',class
+Nemerle.Collections.Tree/Node`1<!'\'a'>>(class
+Nemerle.Collections.Tree/Node`1<!!0>,!!1,class
+Nemerle.Builtins.Function`3<!!0,
+                                                                     
+                                            !!1,
+                                                                     
+                                            !!1>)
+    IL_0018:  newobj     instance void class
+Nemerle.Collections.Set`1<!'\'a'>::.ctor(class
+Nemerle.Collections.Tree/Node`1<!0>)
+    IL_001d:  ret
+  } // end of method Set`1::Sum
+
+and by monodis:
+
+    // method line 610
+    .method public hidebysig
+           instance default class Nemerle.Collections.Set`1<!'\'a'>
+Sum (class Nemerle.Collections.Set`1<!'\'a'> s) -> cil managed
+    {
+        // Method begins at RVA 0xcd0c
+        // Code size 30 (0x1e)         .maxstack 4
+        .locals init (
+                class Nemerle.Builtins.Function`3<!'\'a', class
+Nemerle.Collections.Tree/Node`1<!'\'a'>, class ->
+Nemerle.Collections.Tree/Node`1<!'\'a'>>        V_0)
+        IL_0000:  ldarg.1
+        IL_0001:  ldfld  class Nemerle.Collections.Tree/Node`1<!0>
+class Nemerle.Collections.Set`1<!0>::root
+        IL_0006:  ldarg.0
+        IL_0007:  ldfld  class Nemerle.Collections.Tree/Node`1<!0>
+class Nemerle.Collections.Set`1<!0>::root
+        IL_000c:  newobj instance void class
+Nemerle.Collections.Set`1/_N__N_l10577_10587<!'\'a'>::.ctor()        
+IL_0011:  stloc.0
+        IL_0012:  ldloc.0         IL_0013:  call !!1 class
+Nemerle.Collections.Tree::Fold<!0, class
+Nemerle.Collections.Tree/Node`1<!0>> -> (class
+Nemerle.Collections.Tree/Node`1<!!0>, !!1, class
+Nemerle.Builtins.Function`3<!!0,!!1,!!1>)
+        IL_0018:  newobj instance void class
+Nemerle.Collections.Set`1<!'\'a'>::.ctor(class
+Nemerle.Collections.Tree/-> Node`1<!0>)
+        IL_001d:  ret
+    } // end of method Set`1::instance default class
+Nemerle.Collections.Set`1<!'\'a'> Sum (class Nemerle. ->
+Collections.Set`1<!'\'a'> s)
+
+
+Also when trying to ms.ilasm monodis produced assembly, it assembles
+fine, but later PEVerify screams:
+[IL]: Error: [C:\cygwin\home\malekith\stage3\n.dll :
+Nemerle.Utility.Getopt::Usage] Type load failed.
+[IL]: Error: [C:\cygwin\home\malekith\stage3\n.dll :
+Nemerle.Utility.Getopt::Parse] Type load failed.
+[IL]: Error: [C:\cygwin\home\malekith\stage3\n.dll :
+Nemerle.Utility.Getopt::Parse] Type load failed.
+[IL]: Error: [C:\cygwin\home\malekith\stage3\n.dll :
+Nemerle.Utility.Getopt::_N_concat4729] Type load failed.
+
+and so on, but it can be something wrong with my setup here.
+


More information about the mono-bugs mailing list