[Mono-bugs] [Bug 687902] New: The mono runtime crashes on a long-running WCF server

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Apr 15 12:08:28 EDT 2011


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

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


           Summary: The mono runtime crashes on a long-running WCF server
    Classification: Mono
           Product: Mono: Runtime
           Version: 2.10.x
          Platform: 64bit
        OS/Version: Windows Server 2008 R2
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: remoting
        AssignedTo: lluis at novell.com
        ReportedBy: emily.lewis at lumension.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=425215)
 --> (http://bugzilla.novell.com/attachment.cgi?id=425215)
This is a working example that reproduces the bug

User-Agent:       Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64;
Trident/5.0)

I have composed a very simple WCF SOAP server with a single method, void Ping()
and a client that calls that method in a loop in order to measure remoting
call-time. If you start the server under mono, then run the client the server
soon crashes with a hard access violation. The crash is so hard I can't catch
it in my code - this appears to be a hard runtime crash. I have attached a
working sample hat reproduces he bug.

Reproducible: Always

Steps to Reproduce:
1. Download and open my sample solution
2. Run the server in mono
3. Run the client in Microsoft .Net. You MUST run the client in Microsoft .Net
due to a seperate issue with System.ServiceModel.ClientBase<TChannel> under
mono which I will report in a seperate bug.
4. Observe the client and note that the client reports average call time every
10 seconds. Note that over time the average call time grows progressively
worse, suggesting there is something wrong with the server:

The client is running, press a key to stop...
Contact!
0.863130881094953ms
2.53887559808612ms
3.61134995700774ms
4.14545454545455ms
5.87476280834915ms
5.00810372771475ms
5.70899808551372ms
7.03869969040248ms
7.66666666666667ms
7.7003367003367ms
6.66206395348837ms
8.5355871886121ms
9.36026200873362ms
9.56926188068756ms
12.6885026737968ms
12.5408970976253ms
12.4676354029062ms
12.3530183727034ms
12.5217391304348ms
10.7576099210823ms
10.2411953041622ms
11.9022277227723ms
11.905055487053ms
11.9419924337957ms
11.7959183673469ms
11.8966376089664ms
14.2062780269058ms
16.3232830820771ms
16.1959798994975ms
16.1641541038526ms
16.6735751295337ms
17.0448028673835ms
16.9679144385027ms
16.8924162257496ms
16.8236331569665ms
16.8763440860215ms
17.021568627451ms
12.6992084432718ms

Eventually (within a couple of minutes) the server will hard crash. The client
will get this exception when the server crashes:

     ---->System.ServiceModel.CommunicationException
     Message
          An error occurred while receiving the HTTP response to
http://localhos
t:8080/ProfileSOAP. This could be due to the service endpoint binding not using
the HTTP protocol. This could also be due to an HTTP request context being
abort
ed by the server (possibly due to the service shutting down). See server logs
fo
r more details.
     Stack
          Server stack trace:
          at
System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetRespons
eWebException(WebException webException, HttpWebRequest request,
HttpAbortReason
 abortReason)
          at
System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.
HttpChannelRequest.WaitForReply(TimeSpan timeout)
          at System.ServiceModel.Channels.RequestChannel.Request(Message
message
, TimeSpan timeout)
          at System.ServiceModel.Channels.ServiceChannel.Call(String action,
Boo
lean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs,
TimeS
pan timeout)
          at
System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMet
hodCallMessage methodCall, ProxyOperationRuntime operation)
          at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage
me
ssage)
          Exception rethrown at [0]:
          at
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMess
age reqMsg, IMessage retMsg)
          at
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData
& msgData, Int32 type)
          at client.IProfileSOAP.Ping()
          at client.Program.<>c__DisplayClass3.<DoMain>b__2() in
C:\Temp\FunWith
MonoRESTClient.SOAP\client\Program.cs:line 81
          ---->System.Net.WebException
          Message
               The underlying connection was closed: An unexpected error
occurre
d on a receive.
          Stack
               at System.Net.HttpWebRequest.GetResponse()
               at
System.ServiceModel.Channels.HttpChannelFactory.HttpRequestCha
nnel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
               ---->System.IO.IOException
               Message
                    Unable to read data from the transport connection: An
existi
ng connection was forcibly closed by the remote host.
               Stack
                    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer,
Int3
2 offset, Int32 size)
                    at System.Net.PooledStream.Read(Byte[] buffer, Int32
offset,
 Int32 size)
                    at System.Net.Connection.SyncRead(HttpWebRequest request,
Bo
olean userRetrievedStream, Boolean probeRead)
                    ---->System.Net.Sockets.SocketException
                    Message
                         An existing connection was forcibly closed by the
remot
e host
                    Stack
                         at System.Net.Sockets.NetworkStream.Read(Byte[]
buffer,
 Int32 offset, Int32 size)
Actual Results:  
The WCF server running in mono experiences a hard crash in the mono runtime.

Expected Results:  
If you run this experiment in pure Microsoft .NET the server will run in
perpetuity with the client calling it without the server crashing.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list