http://bugzilla.novell.com/show_bug.cgi?id=595613
http://bugzilla.novell.com/show_bug.cgi?id=595613#c0 Summary: RemotingException when accessing members of System.Object on a remote object marshaled via an interface. Classification: Mono Product: Mono: Class Libraries Version: 2.6.x Platform: x86 OS/Version: openSUSE 11.2 Status: NEW Severity: Normal Priority: P5 - None Component: CORLIB AssignedTo: mono-bugs@lists.ximian.com ReportedBy: mono-...@seamuscasey.com QAContact: mono-bugs@lists.ximian.com Found By: --- Blocker: --- Created an attachment (id=353617) --> (http://bugzilla.novell.com/attachment.cgi?id=353617) test case source User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 When accessing a remote object that has been manually marshaled via an interface, such as: RemotingServices.Marshal( server, ServerUri, typeof(IServerEx) ); ..the Mono remoting subsystem prevents access to the members of Object (in this case, ToString). An exception is thrown, containing the message "Cannot cast from client type 'System.Object ...' to server type 'IServerEx'" The .NET runtime allows for this, however. The client side resembles: IServerEx client1 = (IServerEx) Activator.GetObject( typeof(IServerEx), ServerUri ); Console.WriteLine( client1.ToString() ); The issue appears to be in: mcs/corlib/System.Runtime.Remoting.Messaging/MethodCall.cs, within CastTo(). Perhaps the simplest way to correct this, would be to add an explicit check for System.Object in CastTo. Full stack trace of the exception: System.Runtime.Remoting.RemotingException: Cannot cast from client type 'System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' to server type 'LePouletFou.MonoTest.RemotingSpecificType.Shared.IServerEx' Server stack trace: at System.Runtime.Remoting.Messaging.MethodCall.ResolveMethod () [0x00000] in <filename unknown>:0 at System.Runtime.Remoting.Messaging.MethodCall..ctor (System.Runtime.Remoting.Messaging.Header[] h1) [0x00000] in <filename unknown>:0 at System.Runtime.Serialization.Formatters.Binary.MessageFormatter.ReadMethodCall (BinaryElement elem, System.IO.BinaryReader reader, Boolean hasHeaders, System.Runtime.Remoting.Messaging.HeaderHandler headerHandler, System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter) [0x00000] in <filename unknown>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <filename unknown>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <filename unknown>:0 at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage (IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, System.IO.Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, System.IO.Stream& responseStream) [0x00000] in <filename unknown>:0 Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at System.Object.ToString() at LePouletFou.MonoTest.RemotingSpecificType.Client.Client.Main(String[] args) in W:\_Code\mono\tests\RemotingSpecificType\Client\Client.cs:line 54 I have created the necessary test code, including a shell script for building it with Mono under Linux, etc., plus a Visual Studio 2005 solution. To test it, simply run: mono Server.exe mono Client.exe The client app accepts an optional parameter to connect to a specific host. If omitted, localhost is used. Various combinations of client and server: Mono client, Mono server - fails as described above. NET client, Mono server - fails as described above. Mono client, .NET server - success. NET client, .NET server - success. Reproducible: Always Steps to Reproduce: 1. extract contents of ZIP, "chmod 755 makemono" 2. ./makemono 3. mono Server.exe 4. from second session, "mono Client.exe" Actual Results: An execption is thrown, as described above Expected Results: With the server running under .NET, the client should display the following: Calling client1.DoIt Calling client1.ToString: LePouletFou.MonoTest.RemotingSpecificType.Server.Server Calling client2.DoIt Calling client2.DoItEx Calling client2.ToString: LePouletFou.MonoTest.RemotingSpecificType.Server.Server Press enter to continue. -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - mono-bugs@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-bugs