[Mono-bugs] [Bug 53078][Nor] Changed - Thread not disposed if Start not called

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Tue, 20 Jan 2004 08:27:13 -0500 (EST)

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 derek.mcumber@datamtnsol.com.


--- shadow/53078	2004-01-20 08:26:04.000000000 -0500
+++ shadow/53078.tmp.19182	2004-01-20 08:27:13.000000000 -0500
@@ -2,13 +2,13 @@
 Product: Mono/Class Libraries
 Version: unspecified
 OS: All
 OS Details: 
 Status: NEW   
+Severity: Unknown
 Priority: Normal
 Component: CORLIB
 AssignedTo: mono-bugs@ximian.com                            
 ReportedBy: gonzalo@ximian.com               
 QAContact: mono-bugs@ximian.com
 TargetMilestone: ---
@@ -44,6 +44,47 @@
 ------- Additional Comments From derek.mcumber@datamtnsol.com  2004-01-20 08:26 -------
 Created an attachment (id=6470)
 Declare thread that creates 1 Meg buffers
+------- Additional Comments From derek.mcumber@datamtnsol.com  2004-01-20 08:27 -------
+Thanks for the quick reply.
+I think there may be two issues.
+The one I am trying to solve is when
+    XSP calls
+        MonoWorkerRequest.ProcessRequest, which calls        
+            HttpRuntime.ProcessRequest()
+A thread is created in the threadpool and it runs, but then stops
+at the ~Thread() finalizer and waits for the XSP.exe to shutdown
+before finalizing.
+In a web environment, the finalizer needs to be run when the scope
+has left.  Subsequent calls of 'ProcessRequest' read in a new
+version of XSP.exe and the System.Web.dll because the previous
+copy is blocked waiting for finalization.
+If you run XSP for about 20 page requests on Windows you will run
+out of RAM and get GC Heap Errors before Mono.exe fails.
+In trying to recreate the problem, Gonzolo may have found some other
+issues, but my original question for is this:
+How can I call ~Thread() either in Threads.cs, ThreadPool.cs or
+gc.c at a moment when it has completed running and is holding
+desparately needed resources?
+Thanks for all your help.  Here is an example that holds up
+50Meg of RAM when compiled with mono (look at Task Manager or
+ps -eaf) but with csc.exe and MS.NET runtime, it cleans up
+the threads and only 6Meg of RAM is used after completion.
+I created a version of corlib.dll that prints Console.WriteLine
+statements in ~Thread() and have verified they do not run until
+the main thread is shut down.