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 [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=79546 --- shadow/79546 2006-10-01 18:08:05.000000000 -0400 +++ shadow/79546.tmp.8859 2006-10-01 18:08:05.000000000 -0400 @@ -0,0 +1,186 @@ +Bug#: 79546 +Product: Mono: Runtime +Version: 1.1 +OS: Windows XP +OS Details: Windows XP SP 2 +Status: NEW +Resolution: +Severity: +Priority: Normal +Component: io-layer +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: The listener thread is interrupted without any reason + +Description of Problem: + +The threading of mono seems to be different to the threading of .Net. + +I have following source: + +// The server itself + +public void ListenerThread() +{ + _Listener = new TcpListener(IPAddress.Any, Port); + _Listener.Start(); + + // Store client und waitlist + try + { + while (_IsRunning) + { + TcpClient oClient = _Listener.AcceptTcpClient(); + Console.WriteLine(oClient.Client.RemoteEndPoint.ToString()); + + lock (SyncObject) + { + _PendingClients.Enqueue(oClient); + } + + // Check for waiting workerthread + foreach (WorkerThread oWorkerThread in _WorkerThreads) + { + if (!oWorkerThread.IsInAction) + { + oWorkerThread.IsInAction = true; + oWorkerThread.Event.Set(); + } + } + } + } + catch (SocketException exc) + { + Console.WriteLine("MESSAGE:" + exc.Message); + } +} + +// The workerthread. The workerthread checks a queue for new +// tcp connections and returns "HALLO" to the telnet client +public void ThreadEntry() +{ + Console.WriteLine ( "Starting Workerthread" ); + while ( true ) + { + // Waits for event + _Event.WaitOne( TimeSpan.FromSeconds ( 5 ), false ); + + if ( !_Server.IsRunning ) + { + break; + } + + // In Action + + _IsInAction = true; + + while (true) + { + + // Gets new tcpclient + TcpClient oClient; + lock (_Server.SyncObject) + { + if (_Server.PendingClients.Count > 0) + { + oClient = _Server.PendingClients.Dequeue(); + } + else + { + break; + } + } + + Console.WriteLine("Accepted by Workerthread: " + +_WorkerThreadNumber.ToString()); + + try + { + + // Execute this client + + //_Server.Service.AcceptTcpClient(oClient); + using (Stream oStream = oClient.GetStream()) + { + oStream.Write(Encoding.ASCII.GetBytes("HALLO"), 0, +5); + Thread.Sleep(10000); + throw new Exception(); + } + } + catch (Exception exc) + { + // Exception has occured + Console.WriteLine(exc.Message); + } + } + + _IsInAction = false; + } + + Console.WriteLine ( "Ending Workerthread" ); +} + +I start the server with .Net and mono and connects with telnet to the +server. Everything runs fine in mono, except when I close the telnet +window and interrupts the connection to the server. The listener thread is +interrupted and the server shut downs. I don't see any reason for shutting +down the window. It does not happen in .Net. + +The binary is compiled by Visual Studio 2005. + +The complete source and binary can be downloaded from http://www.depon.net/ +downloads/monoserver.zip + +Steps to reproduce the problem: +1. Execute the server +2. Connect via telnet 127.0.0.1 1000 +3. Close the telnet windows to interrupt the connection unexpectedly +4. Wait for the message 'MESSAGE:interrupted' or repeat the step 2 + +Actual Results: +C:\Dokumente und Einstellungen\mbrenn\Eigene Dateien\Visual Studio +2005\Projects +\Webservertest\Webservertest\bin\Release>mono Webservertest.exe +Arbeitsthreads: 3 +Starting Workerthread +Starting Workerthread +Starting Workerthread +Server is listening +127.0.0.1:2207 +Accepted by Workerthread: 1 +127.0.0.1:2209 +Accepted by Workerthread: 2 +127.0.0.1:2211 +Accepted by Workerthread: 3 +MESSAGE:interrupted +Server has stopped listening +Press key to stop service +WorkerThread: Exception of type System.Exception was thrown. +Ending Workerthread +WorkerThread: Exception of type System.Exception was thrown. +Ending Workerthread +WorkerThread: Exception of type System.Exception was thrown. +Ending Workerthread + +Expected Results: +No interruption of ListenerThread + + +How often does this happen? +Everytime +It also happens when I remove the throwing of the exception + +Additional Information: +Mono JIT compiler version 1.1.17.1, (C) 2002-2006 Novell, Inc and +Contributors. +www.mono-project.com + TLS: normal + GC: Included Boehm (with typed GC) + SIGSEGV: normal + Disabled: none +unter Windows XP SP 2 _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
