[Mono-list] 0.17 bug

Jeroen Frijters jeroen@sumatra.nl
Wed, 18 Dec 2002 16:19:41 +0100


Thanks Paolo,

The XmlSerializer is currently used to parse the XML file (actually an
embedded resource in ik.vm.net.dll) that contains the type remapping
information. It's pretty trivial stuff, look at remapper.cs to see the
object model that is used. It's not too important though, because I'm going
to go to a scheme were the XML file is compiled statically into a DLL
instead of parsed at runtime.

BTW, since I'm too lame to build Mono, if anyone could mail me a new build
(for Windows) including the patch below, that would be really cool.

Regards,
Jeroen

> -----Original Message-----
> From: mono-list-admin@ximian.com 
> [mailto:mono-list-admin@ximian.com] On Behalf Of Paolo Molaro
> Sent: Wednesday, December 18, 2002 15:55
> To: mono-list@go-mono.com
> Subject: Re: [Mono-list] 0.17 bug
> 
> 
> On 12/18/02 Jeroen Frijters wrote:
> > I tried to run "Hello World" (compiled from Java, see 
> http://jeroen.nu/)
> > with the 0.17 (windows) build and got:
> >  at slot 24: hashCode (-1) overrides GetHashCode (4)
> >  at slot 24: equals (-1) overrides Equals (0)
> >  at slot 24: toString (-1) overrides ToString (7)
> > no implementation for interface method 
> java.lang.reflect.Member::.cctor() in
> > class java.lang.reflect.Constructor
> [...]
> > <message box>
> > ** ERROR **: file class.c: line 693 
> (mono_class_setup_vtable): should not be
> > reached
> > aborting...
> > </message box>
> > 
> > It seems that static methods in interfaces aren't handled 
> correctly. Also,
> 
> Apply this patch in mono/metadata:
> 
> Index: class.c
> ===================================================================
> RCS file: /cvs/public/mono/mono/metadata/class.c,v
> retrieving revision 1.140
> diff -u -r1.140 class.c
> --- class.c	11 Dec 2002 17:27:56 -0000	1.140
> +++ class.c	18 Dec 2002 14:44:19 -0000
> @@ -672,7 +672,9 @@
>  			if (!(class->flags & TYPE_ATTRIBUTE_ABSTRACT)) {
>  				for (l = 0; l < ic->method.count; l++) {
>  					char *msig;
> -					MonoMethod *im = 
> ic->methods [l];						
> +					MonoMethod *im = 
> ic->methods [l];
> +					if (im->flags & 
> METHOD_ATTRIBUTE_STATIC)
> +							continue;
>  					g_assert (io + l <= max_vtsize);
>  					if (!(vtable [io + l])) {
>  						for (j = 0; j < 
> onum; ++j) {
> 
> > why are the first three lines printed?
> 
> It's part of the debug output for the error: we'll disable it 
> and raise
> an exception when mono is more mature.
> 
> I downloaded the binaries and compiled a hello world app. After the
> change to class.c it still doesn't work, put it looks promising:
> 
> lupus@luna:/mnt/net/ikvm$ mono helloj.exe 
> caught: System.NotImplementedException, handler: java.lang.Exception
> System.NotImplementedException: The requested feature is not 
> yet implemented
> in <0x0002f> 00 
> System.Xml.Serialization.XmlSerializer:Deserialize (System.IO.Stream)
> in <0x0024f> 00 .ClassLoaderWrapper:LoadRemappedTypes ()
> in <0x00058> 00 .ClassLoaderWrapper:GetBootstrapClassLoader ()
> in <0x0001a> 00 .ClassLoaderWrapper:GetType (string)
> in <0x00073> 00 .ExceptionHelper:MapException 
> (System.Exception,System.Type)
> in <0x003e9> 00 
> gnu.java.io.EncodingManager:findDecoderConstructor (string,bool)
> in <0x001c2> 00 gnu.java.io.EncodingManager:.cctor ()
> 
> It would help to know what the xml serialization is used for, 
> maybe for
> some simple types it's easy to implement to get ik.vm going.
> 
> Thanks!
> 
> lupus
> 
> -- 
> -----------------------------------------------------------------
> lupus@debian.org                                     debian/rules
> lupus@ximian.com                             Monkeys do it better
> 
> _______________________________________________
> Mono-list maillist  -  Mono-list@ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>