[Mono-bugs] [Bug 670974] New: Race condition in deserialization process

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Feb 10 10:22:04 EST 2011


https://bugzilla.novell.com/show_bug.cgi?id=670974

https://bugzilla.novell.com/show_bug.cgi?id=670974#c0


           Summary: Race condition in deserialization process
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.8.x
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: WCF
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: pg at 7pg.de
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=413329)
 --> (http://bugzilla.novell.com/attachment.cgi?id=413329)
Sample program

Description of Problem:
I am using Mono WCF with NetTcpBinding.
When I call the service in a loop I get an error.
After a random amount of calls the service stops operating because of an
ArgumentException being thrown during deserialization.

Steps to reproduce the problem:
1. Create a basic service contract, service and client. (see attached file)
2. Call the service in a loop.

Actual Results:
Stacktrace from service:
System.ArgumentException: Arg_InsufficientSpace
Parameter name: chars
  at System.Text.UTF8Encoding.InternalGetChars (System.Byte* bytes, Int32
byteCount, System.Char* chars, Int32 charCount, System.UInt32& leftOverBits,
System.UInt32& leftOverCount, System.Object provider,
System.Text.DecoderFallbackBuffer& fallbackBuffer, System.Byte[]& bufferArg,
Boolean flush) [0x003a7] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/corlib/System.Text/UTF8Encoding.cs:822
  at System.Text.UTF8Encoding.InternalGetChars (System.Byte[] bytes, Int32
byteIndex, Int32 byteCount, System.Char[] chars, Int32 charIndex,
System.UInt32& leftOverBits, System.UInt32& leftOverCount, System.Object
provider, System.Text.DecoderFallbackBuffer& fallbackBuffer, System.Byte[]&
bufferArg, Boolean flush) [0x0010b] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/corlib/System.Text/UTF8Encoding.cs:678
  at System.Text.UTF8Encoding.GetChars (System.Byte[] bytes, Int32 byteIndex,
Int32 byteCount, System.Char[] chars, Int32 charIndex) [0x00008] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/corlib/System.Text/UTF8Encoding.cs:832
  at System.IO.BinaryReader.ReadCharBytes (System.Char[] buffer, Int32 index,
Int32 count, System.Int32& bytes_read) [0x00041] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/corlib/System.IO/BinaryReader.cs:244
  at System.IO.BinaryReader.PeekChar () [0x0004a] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/corlib/System.IO/BinaryReader.cs:143
  at System.Xml.XmlBinaryDictionaryReader+StreamSource.ReadByte () [0x00000] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs:75
  at System.Xml.XmlBinaryDictionaryReader.ReadByteOrError () [0x0001d] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs:1031
  at System.Xml.XmlBinaryDictionaryReader.ReadElementBinary (Int32 ident)
[0x00181] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs:729
  at System.Xml.XmlBinaryDictionaryReader.Read () [0x0026f] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs:601
  at System.Xml.XmlWriter.WriteNode (System.Xml.XmlReader reader, Boolean
defattr) [0x00218] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.XML/System.Xml/XmlWriter.cs:576
  at System.ServiceModel.Channels.MessageHeader+RawMessageHeader..ctor
(System.Xml.XmlReader reader, System.String soap_ns) [0x000ed] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageHeader.cs:245
  at System.ServiceModel.Channels.XmlReaderMessage.ReadHeaders () [0x000dc] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageImpl.cs:174
  at System.ServiceModel.Channels.XmlReaderMessage.get_Headers () [0x0000b] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageImpl.cs:76
  at System.ServiceModel.Dispatcher.EndpointAddressMessageFilter.Match
(System.ServiceModel.Channels.Message message) [0x00000] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/EndpointAddressMessageFilter.cs:70
  at System.ServiceModel.Dispatcher.ListenerLoopManager.FindEndpointDispatcher
(System.ServiceModel.Channels.Message message) [0x00021] in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs:636
  at System.ServiceModel.Dispatcher.ListenerLoopManager.ProcessInput
(IInputChannel input, System.ServiceModel.Channels.Message message) [0x00002]
in
/usr/src/packages/BUILD/mono-2.8.2/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs:618


How often does this happen? 
Always.

-- 
Configure bugmail: https://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.


More information about the mono-bugs mailing list