mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 10:46:00 +08:00
"threads" command now works. I've added manual tracking of threads (only if compiled in DEBUG mode)... Its ugly and even requires a separate thread to track the treads, but it will be very valuable in debugging.
This commit is contained in:
@@ -754,15 +754,30 @@ namespace OpenSim
|
||||
break;
|
||||
|
||||
case "threads":
|
||||
m_console.Notice("THREAD", Process.GetCurrentProcess().Threads.Count + " threads running:");
|
||||
int _tc = 0;
|
||||
//m_console.Notice("THREAD", Process.GetCurrentProcess().Threads.Count + " threads running:");
|
||||
//int _tc = 0;
|
||||
|
||||
foreach (ProcessThread pt in Process.GetCurrentProcess().Threads)
|
||||
//foreach (ProcessThread pt in Process.GetCurrentProcess().Threads)
|
||||
//{
|
||||
// _tc++;
|
||||
// m_console.Notice("THREAD", _tc + ": ID: " + pt.Id + ", Started: " + pt.StartTime.ToString() + ", CPU time: " + pt.TotalProcessorTime + ", Pri: " + pt.BasePriority.ToString() + ", State: " + pt.ThreadState.ToString());
|
||||
|
||||
//}
|
||||
List<Thread> threads = OpenSim.Framework.ThreadTracker.GetThreads();
|
||||
if (threads == null)
|
||||
{
|
||||
m_console.Notice("THREAD", "Thread tracking is only enabled in DEBUG mode.");
|
||||
}
|
||||
else
|
||||
{
|
||||
int _tc = 0;
|
||||
m_console.Notice("THREAD", threads.Count + " threads are being tracked:");
|
||||
foreach (Thread t in threads)
|
||||
{
|
||||
_tc++;
|
||||
m_console.Notice("THREAD", _tc + ": ID: " + pt.Id + ", Started: " + pt.StartTime.ToString() + ", CPU time: " + pt.TotalProcessorTime + ", Pri: " + pt.BasePriority.ToString() + ", State: " + pt.ThreadState.ToString());
|
||||
|
||||
m_console.Notice("THREAD", _tc + ": ID: " + t.ManagedThreadId.ToString() + ", Name: " + t.Name + ", Alive: " + t.IsAlive.ToString() + ", Pri: " + t.Priority.ToString() + ", State: " + t.ThreadState.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
|
||||
@@ -228,6 +228,7 @@ namespace OpenSim.Region.ClientStack
|
||||
m_clientThread.Name = "ClientThread";
|
||||
m_clientThread.IsBackground = true;
|
||||
m_clientThread.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(m_clientThread);
|
||||
}
|
||||
|
||||
public void SetDebug(int newDebug)
|
||||
|
||||
@@ -113,7 +113,10 @@ namespace OpenSim.Region.Environment.Modules
|
||||
m_irc_connector.Name = "IRCConnectorThread";
|
||||
m_irc_connector.IsBackground = true;
|
||||
}
|
||||
if (!m_irc_connector.IsAlive) { m_irc_connector.Start(); }
|
||||
if (!m_irc_connector.IsAlive) {
|
||||
m_irc_connector.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(m_irc_connector);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -260,7 +263,10 @@ namespace OpenSim.Region.Environment.Modules
|
||||
m_irc_connector.Name = "IRCConnectorThread";
|
||||
m_irc_connector.IsBackground = true;
|
||||
}
|
||||
if (!m_irc_connector.IsAlive) { m_irc_connector.Start(); }
|
||||
if (!m_irc_connector.IsAlive) {
|
||||
m_irc_connector.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(m_irc_connector);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -421,11 +427,13 @@ namespace OpenSim.Region.Environment.Modules
|
||||
pingSender.Name = "PingSenderThread";
|
||||
pingSender.IsBackground = true;
|
||||
pingSender.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(pingSender);
|
||||
|
||||
listener = new Thread(new ThreadStart(ListenerRun));
|
||||
listener.Name = "IRCChatModuleListenerThread";
|
||||
listener.IsBackground = true;
|
||||
listener.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(listener);
|
||||
|
||||
m_writer.WriteLine(m_user);
|
||||
m_writer.Flush();
|
||||
|
||||
@@ -287,6 +287,7 @@ namespace OpenSim.Region.Environment.Modules
|
||||
httpThread.IsBackground = true;
|
||||
finished = false;
|
||||
httpThread.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(httpThread);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -75,6 +75,7 @@ namespace OpenSim.Region.Environment.Modules
|
||||
m_thread.Name = "ProcessTextureSenderThread";
|
||||
m_thread.IsBackground = true;
|
||||
m_thread.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(m_thread);
|
||||
}
|
||||
|
||||
if (!m_scenes.Contains(scene))
|
||||
|
||||
@@ -584,6 +584,7 @@ namespace OpenSim.Region.Environment.Modules
|
||||
httpThread.IsBackground = true;
|
||||
finished = false;
|
||||
httpThread.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(httpThread);
|
||||
|
||||
return reqID;
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
||||
cmdHandlerThread.Priority = ThreadPriority.BelowNormal;
|
||||
cmdHandlerThread.IsBackground = true;
|
||||
cmdHandlerThread.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(cmdHandlerThread);
|
||||
}
|
||||
|
||||
public void ReadConfig()
|
||||
|
||||
@@ -117,6 +117,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
||||
EventQueueThread.Priority = MyThreadPriority;
|
||||
EventQueueThread.Name = "EventQueueManagerThread_" + ThreadCount;
|
||||
EventQueueThread.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(EventQueueThread);
|
||||
|
||||
// Look at this... Don't you wish everyone did that solid coding everywhere? :P
|
||||
if (ThreadCount == int.MaxValue)
|
||||
|
||||
@@ -78,6 +78,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
||||
MaintenanceThreadThread.Name = "ScriptMaintenanceThread";
|
||||
MaintenanceThreadThread.IsBackground = true;
|
||||
MaintenanceThreadThread.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(MaintenanceThreadThread);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -160,6 +160,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
||||
t.IsBackground = true;
|
||||
t.Priority = ThreadPriority.Normal;
|
||||
t.Start();
|
||||
OpenSim.Framework.ThreadTracker.Add(t);
|
||||
return t;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user