[Mono-dev] WCF Fail with System.Net.Sockets.SocketException: Connection reset by peer

Rob Wilkens robwilkens at gmail.com
Thu Jun 28 12:20:14 UTC 2012


Either of the attached patches illustrates what i was trying to say in
that last patch

(1) attempt2.patch  : This attempts to patch just the below concern, and
is based on a guess.
-or- (not both)
(2) combined.patch : This combines attempt2.patch with the patch i sent
last night since they were on the same branch.

I'm not able to test these anything beyond "does it compile" because i
don't have sample code to reproduce this with.

-Rob

On 06/28/2012 07:55 AM, Rob Wilkens wrote:
> Re : The stacktrace below...
>
> This occurs when an exception is raised in ChannelDispatcher.cs on
> line 601.  It tries to send back an exception message to the client
> here, i believe.  But when it does that, it uses the existing
> RequestContext. 
>
> It's apparent that some data is apparently being sent, such as
> headers, on the RequestContext (rc) before we get to this exception.
>
> If we're dealing with the case of SocketException, which caused us to
> fail mid-send on the RequestContext, perhaps, again, we shouldn't
> handle this like every other exception and not reply.  i.e. in the
> exception handler here, if exception is typeof(SocketException) don't
> reply, what might be more interesting, if this is reproducable, would
> be to - as debugging - print the exception message and/or stacktrace
> to the screen to see what exception caused this.
>
> Did you file a bug report on this?  The discussion on this particular
> issue (or any particular bug) is probably better stored in the bug
> report comments than on the whole mailing list.  PLus comments like
> the above would stay in the bug report rather than get lost in the
> list.  IF you file a bug report, post a link to the bug report in this
> thread (the bug # should be enough).
>
> -Rob
>
>
> On 06/27/2012 01:02 PM, shahbour wrote:
>>
>>
>>         Hello After more testing between Mac and Windows this is what
>>         i got Crash Windows Mac Linux Without ErroHandler No Yes Yes
>>         With ErrorHandler (return false ) No Yes Yes With
>>         ErrorHandler (return true) No No No Before i was always
>>         returning false in IErrorHandler implementation because i
>>         only implemented for logging purpose but when i return true
>>         for the HandleError , the application fire the error and log
>>         it but never crash. Now i trying to debug the application
>>         under MonoDevelop and repreduce the error, below is what i got
>>
>>
>>             System.InvalidOperationException: Cannot be changed after
>>             headers are sent. at
>>             System.Net.HttpListenerResponse.set_ContentType
>>             (System.String value) [0x00027] in
>>             /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System/System.Net/HttpListenerResponse.cs:107
>>             at
>>             System.ServiceModel.Channels.Http.HttpStandaloneResponseInfo.set_ContentType
>>             (System.String value) [0x00000] in
>>             /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpContextInfo.cs:274
>>             at
>>             System.ServiceModel.Channels.Http.HttpRequestContext.InternalReply
>>             (System.ServiceModel.Channels.Message msg, TimeSpan
>>             timeout) [0x00046] in
>>             /private/tmp/monobuild/build/BUILD/mono-2.10.9
>>
>
>>             /mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpRequestContext.cs:140
>>             at
>>             System.ServiceModel.Channels.Http.HttpRequestContext.Reply (System.ServiceModel.Channels.Message
>>             msg, TimeSpan timeout) [0x00000] in
>>             /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpRequestContext.cs:101
>>             at
>>             System.ServiceModel.Channels.Http.HttpRequestContext.Reply (System.ServiceModel.Channels.Message
>>             msg) [0x00000] in
>>             /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpRequestContext.cs:96
>>             at
>>             System.ServiceModel.Dispatcher.ListenerLoopManager.ProcessRequest
>>             (IReplyChannel reply,
>>             System.ServiceModel.Channels.RequestContext rc) [0x0003b]
>>             in
>>             /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs:601
>>             at
>>             System.ServiceModel.Dispatcher.ListenerLoopManager.TryReceiveRequestDone
>>             (IAsyncResult result) [0x0001a] in
>>             /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs:575
>>
>> Reproducing the error is very simple, just host any application under
>> console app and in any service function put Thread.Sleep(..) to give
>> you time to close the browser before it reply. Then call this
>> function from any client and close it before getting the response. In
>> my live program i don't put Thread.sleep it is only to give us time
>> between calling the function and closing the browser. Under windows
>> we got the bellow that don't crash the application error.Message "An
>> operation was attempted on a nonexistent network connection"
>> error.InnerException {"An operation was attempted on a nonexistent
>> network connection"} System.Exception :q
>> {System.Net.HttpListenerException} error.ErrorCode 1229 BR Shahbour
>> ------------------------------------------------------------------------
>> View this message in context: Re: WCF Fail with
>> System.Net.Sockets.SocketException: Connection reset by peer
>> <http://mono.1490590.n4.nabble.com/WCF-Fail-with-System-Net-Sockets-SocketException-Connection-reset-by-peer-tp4650173p4650210.html>
>> Sent from the Mono - Dev mailing list archive
>> <http://mono.1490590.n4.nabble.com/Mono-Dev-f1517221.html> at Nabble.com.
>>
>>
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20120628/ed5551c3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: attempt2.patch
Type: text/x-patch
Size: 931 bytes
Desc: not available
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20120628/ed5551c3/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: combined.patch
Type: text/x-patch
Size: 2119 bytes
Desc: not available
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20120628/ed5551c3/attachment-0001.bin>


More information about the Mono-devel-list mailing list