Hi,
This simple piece of code demostrate that some problems are in this method (or at
least that some classes this method uses are not thread safe/need some fixes):
--- CUT HERE ---
using System;
namespace ConsoleApplication2
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
System.Threading.ThreadPool.QueueUserWorkItem
(new System.Threading.WaitCallback(MyFunction));
}
static void MyFunction(object o)
{
Console.Write("hello world!");
}
}
--- END CUT HERE ---
Using **MINT** the output is the following, both on cygwin and linux:
(process:2640): ** WARNING **: unhandled exception System.IndexOutOfRangeException:
"Array index is out of range"
#0: 0x00051 stelem.ref in System.Collections.ArrayList::Add ([00C02DC0] )
#1: 0x00075 callvirt in System.Threading.ThreadPool::CheckIfStartThread ()
#2: 0x00001 call in System.Threading.ThreadPool::AddItem ([0022F4E8] )
#3: 0x0001b call in System.Threading.ThreadPool::QueueUserWorkItemInternal
([00C03C60] [00000000] )
#4: 0x00007 callvirt in System.Threading.ThreadPool::QueueUserWorkItem ([00C03C60]
[00000000] )
#5: 0x00002 call in System.Threading.ThreadPool::QueueUserWorkItemInternal
([00C03C60] )
#6: 0x00006 callvirt in System.Threading.ThreadPool::QueueUserWorkItem ([00C03C60] )
#7: 0x0000c call in ConsoleApplication2.Class1::Main ([00C06F60] )
Using **MONO** just the first line appears, then the process seems to hang for a while
and then the call stack is printed.
Commenting the ArrayList::Add method in the CheckIfStartThread method allows to bypass
the problem, but then each QueueUserWorkItem call would create a new thread. Hope this
helps.
Regards,
Francesco
_______________________________________________
Mono-list maillist - [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list