[Mono-bugs] [Bug 79112][Wis] New - HttpListenerRequest.InputStream.Read blocks indefinitively
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Sun Aug 20 02:04:42 EDT 2006
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by steveb at mindtouch.com.
http://bugzilla.ximian.com/show_bug.cgi?id=79112
--- shadow/79112 2006-08-20 02:04:42.000000000 -0400
+++ shadow/79112.tmp.28157 2006-08-20 02:04:42.000000000 -0400
@@ -0,0 +1,61 @@
+Bug#: 79112
+Product: Mono: Class Libraries
+Version: 1.1
+OS: All
+OS Details: Debian, OS X
+Status: NEW
+Resolution:
+Severity:
+Priority: Wishlist
+Component: Sys.Web
+AssignedTo: gonzalo at ximian.com
+ReportedBy: steveb at mindtouch.com
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: HttpListenerRequest.InputStream.Read blocks indefinitively
+
+First, you need the MindTouch Dream source at:
+ svn://dev.opengarden.org/svn/trunk/product/dream
+
+To build, execute
+ build.sh
+
+Description of Problem: reading from HttpListenerRequest.InputStream on
+another worker thread blocks the operation indefinitively
+
+
+Steps to reproduce the problem:
+1. build Dream using 'build.sh'
+2. change to the 'bin' folder
+3. execute 'mono --debug mindtouch.host.exe'
+4. open another terminal window
+5. go to the 'mindtouch.host' folder
+6. execute 'curl -H 'Content-Type: text/xml' -d @show-headers.startup.xml
+http://localhost:8081/host/execute'
+
+Actual Results:
+The terminal running the Dream host will show that the message was
+received, but will block processing it. Specifically, it blocks at
+'DreamMessage.cs:Document' when it tries to deserialize the XDoc from
+'_stream' near line 178. More details on the internal processing order below.
+
+Expected Results:
+Have 'DreamMessage.Document' succeed without blocking. (NOTE: the
+operation itself might not succeed, but that's ok)
+
+How often does this happen?
+Always on OS X.
+
+Additional Information:
+Here is the sequence of events that occur when a message is reiceved.
+1. 'mindtouch.core/httptransport.cs' sets up an async HttpListener. When a
+message arrives, 'HttpTransport.CommonRequestHandler' is invoked.
+2. 'CommonRequestHandler' creates a 'DreamMessage' using
+'HttpListenereRequest.InputStream' (note that the input stream is not read yet)
+3. the DreamMessage is handed off to the DreamEnvironment, which locates
+the method delegate to invoke for this request
+4. the delegate uses 'DreamRequest.ReceiveXDoc' to retrieve the request
+5. 'DreamRequest.ReceiveXDoc' invokes 'DreamMessage.Message' to deserialize
+the input stream (this is when it blocks)
More information about the mono-bugs
mailing list