Bug #589
remoting error since updating smuxi-server to Mono 2.10.1
Status: | Closed | Start: | 04/20/2011 | |
Priority: | Urgent | Due date: | ||
Assigned to: | Mirco Bauer | % Done: | 0% |
|
Category: | Server | |||
Target version: | 1.0+stable | |||
Complexity: | High |
Found in Version: | ||
Votes: | 1 (View) |
Description
Exception Type: System.InvalidCastException Exception Message: Object must implement IConvertible. Exception StackTrace: Server stack trace: at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Runtime.Serialization.FormatterConverter.Convert(Object value, Type type) at System.Runtime.Serialization.SerializationInfo.GetValue(String name, Type type) at System.Collections.Generic.Dictionary`2.OnDeserialization(Object sender) at System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding) at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.DeserializeMessage(IMethodCallMessage mcm, ITransportHeaders headers, Stream stream) at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg) 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 Smuxi.Engine.GroupChatModel.get_Persons() at Smuxi.Frontend.Gnome.GroupChatView.Sync() at Smuxi.Frontend.Gnome.GnomeUI.<SyncChat>c__AnonStoreyA.<>m__13(Object , EventArgs )
Related issues
related to Smuxi - Feature #814 | HTTP/REST/JSON Web API | New | 02/26/2013 | ||
duplicated by Smuxi - Bug #898 | Exception: Ein Objekt muss IConvertible implementieren. | Closed | 10/28/2013 | ||
duplicated by Smuxi - Bug #652 | InvalidCastException when connecting to server | Closed | 11/23/2011 | ||
duplicated by Smuxi - Bug #996 | Happens every time Twitter tries to sync with the client | Closed | 11/12/2014 | ||
duplicated by Smuxi - Bug #998 | Exception: Object must implement IConvertible. | Closed | 11/19/2014 |
Associated revisions
Revision 1e172f72a127afeea33f2cffa9455b7d147cb7f6
Frontend-GNOME: detect and report Mono <-> .NET incompatibility for remote engines (refs: #589)
Smuxi users running a smuxi-server on Mono and connecting from Windows using the
Microsoft .NET framework will lead to an user-unfriendly crash dialog like this:
Exception Type:
System.InvalidCastException
Exception Message:
Object must implement IConvertible.
Exception StackTrace:
Server stack trace:
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Runtime.Serialization.FormatterConverter.Convert(Object value, Type type)
at System.Runtime.Serialization.SerializationInfo.GetValue(String name, Type type)
at System.Collections.Generic.Dictionary`2.OnDeserialization(Object sender)
at System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding)
at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
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 Smuxi.Engine.GroupChatModel.get_Persons()
at Smuxi.Frontend.Gnome.GroupChatView.Sync()
at Smuxi.Frontend.Gnome.TwitterGroupChatView.Sync()
The user has no hint how to proceed here. Since this is a known incompatibility
since Mono 2.10 [0], we detect this condition and hint the user how to fix it.
History
Updated by Mirco Bauer 4917 days ago
Are you using smuxi-server? If so, which side have you upgraded to 2.10.1?
Updated by Mirco Bauer 4917 days ago
For the record: smuxi-server on mono 2.6.7 and smuxi-frontend-gnome on mono 2.10.1 works for me
Updated by Carlo Kok 4917 days ago
server is: Mono JIT compiler version 2.10.1 (tarball Mon Apr 11 15:46:24 UTC 2011)
mono --version
gui runs on windows (not mono). It worked before I updated the server to 2.10
Updated by Mirco Bauer 4910 days ago
Carlo Kok wrote:
Have you installed Smuxi from source tarball or a binary package? Please check if it links .NET 2.0 by running:server is:
[ck@buurtnet ~]$ mono --version Mono JIT compiler version 2.10.1 (tarball Mon Apr 11 15:46:24 UTC 2011)
gui runs on windows (not mono). It worked before I updated the server to 2.10
monodis --assemblyref smuxi-server.exe
Updated by Carlo Kok 4909 days ago
1: Version=2.0.0.0
Name=mscorlib
Flags=0x00000000
Public Key:
0x00000000: B7 7A 5C 56 19 34 E0 89
2: Version=1.2.10.0
Name=log4net
Flags=0x00000000
Public Key:
0x00000000: A5 71 5C C6 D5 C3 54 0B
3: Version=0.8.0.0
Name=smuxi-common
Flags=0x00000000
Zero sized public key
4: Version=0.8.0.0
Name=smuxi-engine
Flags=0x00000000
Zero sized public key
5: Version=2.0.0.0
Name=System.Runtime.Remoting
Flags=0x00000000
Public Key:
0x00000000: B7 7A 5C 56 19 34 E0 89
6: Version=2.0.0.0
Name=System
Flags=0x00000000
Public Key:
0x00000000: B7 7A 5C 56 19 34 E0 89
Installed from a binary package, I think the "Other "package.
Updated by Mirco Bauer 4909 days ago
So Mono 2.10.1 is no longer ABI (Remoting) compatible with .NET 3.5, that is very sad. I hope this will be fixed in Mono. Can you give Mono 2.10.2 a try?
Updated by Mirco Bauer 4705 days ago
- Priority changed from Normal to Urgent
Updated by Mirco Bauer 4702 days ago
There is no known workaround yet. Mono 2.10.x broke ABI compatibility with MS .NET when it comes to the System.Collections.Generic.Dictionary<K, V> type which Smuxi makes use of. We will need a fix in Mono for this issue.
Updated by Mike Gibson 4654 days ago
Has this bug been reported upstream? If so, do you have a link to the case? I'm having the same issue in my code and would like to look into fixing it.
Updated by Mirco Bauer 4518 days ago
- Status changed from New to Closed
I never experienced this issue with Mono 2.10.8 so I think I can assume the issue is no longer present
Updated by Mirco Bauer 3997 days ago
- Category set to Server
- Status changed from Closed to New
Updated by Mirco Bauer 3997 days ago
This issue only becomes visible when the smuxi-server runs on Mono 2.10 and the frontend on Microsoft .NET
Updated by Mirco Bauer 3404 days ago
- Complexity set to High
Updated by Mirco Bauer 3404 days ago
Most people start to only see this issue when they add a Twitter account for some reason. Here is such sample:
Exception Type: System.InvalidCastException Exception Message: Obiekt musi implementowa? element IConvertible. Exception StackTrace: Server stack trace: w System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) w System.Runtime.Serialization.FormatterConverter.Convert(Object value, Type type) w System.Runtime.Serialization.SerializationInfo.GetValue(String name, Type type) w System.Collections.Generic.Dictionary`2.OnDeserialization(Object sender) w System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent() w System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) w System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) w System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding) w System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg) Exception rethrown at [0]: w System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) w System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) w Smuxi.Engine.GroupChatModel.get_Persons() w Smuxi.Frontend.Gnome.GroupChatView.Sync() w Smuxi.Frontend.Gnome.TwitterGroupChatView.Sync() w Smuxi.Frontend.ChatViewSyncManager.Sync(IChatView chatView) w Smuxi.Frontend.ChatViewSyncManager.SyncWorker(ChatModel chatModel)
Updated by Mirco Bauer 3010 days ago
- Subject changed from remoting error since updating mono to 2.10.1 to remoting error since updating smuxi-server to Mono 2.10.1
- Status changed from New to Assigned
- Assigned to set to Mirco Bauer
Updated by Mirco Bauer 3010 days ago
The real fix of this issue will come with switching to a new RPC system like REST. HTTP/JSON/REST does not rely on binary serialization like .NET remoting currently does.
Updated by Mirco Bauer 2880 days ago
- Status changed from Assigned to Resolved
- Target version set to 1.0+stable
Updated by Mirco Bauer 2880 days ago
- Status changed from Resolved to Closed
Smuxi is now detecting this issue and shows a dialog with a link to resolve the issue instead of crashing.