aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-11-04 00:55:48 +0000
committerJustin Clark-Casey (justincc)2014-11-25 23:23:10 +0000
commitec8d21c434a39f46518ee9cf9f5539d1790eacc0 (patch)
tree2aa340fb34c6f6e8e8f2e31c2034b5841307a7bf
parentAdd "show threadpool calls" command to show count of all labelled smartthread... (diff)
downloadopensim-SC_OLD-ec8d21c434a39f46518ee9cf9f5539d1790eacc0.zip
opensim-SC_OLD-ec8d21c434a39f46518ee9cf9f5539d1790eacc0.tar.gz
opensim-SC_OLD-ec8d21c434a39f46518ee9cf9f5539d1790eacc0.tar.bz2
opensim-SC_OLD-ec8d21c434a39f46518ee9cf9f5539d1790eacc0.tar.xz
Label all threadpool calls being made in core OpenSimulator. This is to add problem diagnosis.
"show threadpool calls" now also returns named (labelled), anonymous (unlabelled) and total call stats.
-rw-r--r--OpenSim/Framework/Communications/RestClient.cs2
-rw-r--r--OpenSim/Framework/Servers/ServerBase.cs8
-rw-r--r--OpenSim/Framework/Util.cs23
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs9
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs2
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs8
-rw-r--r--OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs6
-rw-r--r--OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs6
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs10
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs21
-rw-r--r--OpenSim/Region/OptionalModules/ViewerSupport/DynamicMenuModule.cs3
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs8
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs16
-rw-r--r--OpenSim/Server/Handlers/Simulation/AgentHandlers.cs3
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs4
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs2
-rw-r--r--OpenSim/Services/HypergridService/HGFriendsService.cs3
-rw-r--r--OpenSim/Services/MapImageService/MapImageService.cs3
-rw-r--r--OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs2
30 files changed, 103 insertions, 65 deletions
diff --git a/OpenSim/Framework/Communications/RestClient.cs b/OpenSim/Framework/Communications/RestClient.cs
index de6fe30..72018e4 100644
--- a/OpenSim/Framework/Communications/RestClient.cs
+++ b/OpenSim/Framework/Communications/RestClient.cs
@@ -483,7 +483,7 @@ namespace OpenSim.Framework.Communications
483 /// In case, we are invoked asynchroneously this object will keep track of the state 483 /// In case, we are invoked asynchroneously this object will keep track of the state
484 /// </summary> 484 /// </summary>
485 AsyncResult<Stream> ar = new AsyncResult<Stream>(callback, state); 485 AsyncResult<Stream> ar = new AsyncResult<Stream>(callback, state);
486 Util.FireAndForget(RequestHelper, ar); 486 Util.FireAndForget(RequestHelper, ar, "RestClient.BeginRequest");
487 return ar; 487 return ar;
488 } 488 }
489 489
diff --git a/OpenSim/Framework/Servers/ServerBase.cs b/OpenSim/Framework/Servers/ServerBase.cs
index 379e224..eb9fb8b 100644
--- a/OpenSim/Framework/Servers/ServerBase.cs
+++ b/OpenSim/Framework/Servers/ServerBase.cs
@@ -365,13 +365,21 @@ namespace OpenSim.Framework.Servers
365 { 365 {
366 List<KeyValuePair<string, int>> calls = Util.GetFireAndForgetCallsMade().ToList(); 366 List<KeyValuePair<string, int>> calls = Util.GetFireAndForgetCallsMade().ToList();
367 calls.Sort((kvp1, kvp2) => kvp2.Value.CompareTo(kvp1.Value)); 367 calls.Sort((kvp1, kvp2) => kvp2.Value.CompareTo(kvp1.Value));
368 int namedCallsMade = 0;
368 369
369 ConsoleDisplayList cdl = new ConsoleDisplayList(); 370 ConsoleDisplayList cdl = new ConsoleDisplayList();
370 foreach (KeyValuePair<string, int> kvp in calls) 371 foreach (KeyValuePair<string, int> kvp in calls)
371 { 372 {
372 cdl.AddRow(kvp.Key, kvp.Value); 373 cdl.AddRow(kvp.Key, kvp.Value);
374 namedCallsMade += kvp.Value;
373 } 375 }
374 376
377 cdl.AddRow("TOTAL NAMED", namedCallsMade);
378
379 long allCallsMade = Util.TotalFireAndForgetCallsMade;
380 cdl.AddRow("TOTAL ANONYMOUS", allCallsMade - namedCallsMade);
381 cdl.AddRow("TOTAL ALL", allCallsMade);
382
375 MainConsole.Instance.Output(cdl.ToString()); 383 MainConsole.Instance.Output(cdl.ToString());
376 } 384 }
377 385
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 53bbb06..baad0b9 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1928,11 +1928,6 @@ namespace OpenSim.Framework
1928 } 1928 }
1929 } 1929 }
1930 1930
1931 public static void FireAndForget(System.Threading.WaitCallback callback)
1932 {
1933 FireAndForget(callback, null, null);
1934 }
1935
1936 public static void InitThreadPool(int minThreads, int maxThreads) 1931 public static void InitThreadPool(int minThreads, int maxThreads)
1937 { 1932 {
1938 if (maxThreads < 2) 1933 if (maxThreads < 2)
@@ -1977,8 +1972,7 @@ namespace OpenSim.Framework
1977 throw new NotImplementedException(); 1972 throw new NotImplementedException();
1978 } 1973 }
1979 } 1974 }
1980 1975
1981
1982 /// <summary> 1976 /// <summary>
1983 /// Additional information about threads in the main thread pool. Used to time how long the 1977 /// Additional information about threads in the main thread pool. Used to time how long the
1984 /// thread has been running, and abort it if it has timed-out. 1978 /// thread has been running, and abort it if it has timed-out.
@@ -2052,10 +2046,10 @@ namespace OpenSim.Framework
2052 } 2046 }
2053 } 2047 }
2054 2048
2055
2056 private static long nextThreadFuncNum = 0; 2049 private static long nextThreadFuncNum = 0;
2057 private static long numQueuedThreadFuncs = 0; 2050 private static long numQueuedThreadFuncs = 0;
2058 private static long numRunningThreadFuncs = 0; 2051 private static long numRunningThreadFuncs = 0;
2052 private static long numTotalThreadFuncsCalled = 0;
2059 private static Int32 threadFuncOverloadMode = 0; 2053 private static Int32 threadFuncOverloadMode = 0;
2060 2054
2061 // Maps (ThreadFunc number -> Thread) 2055 // Maps (ThreadFunc number -> Thread)
@@ -2086,20 +2080,29 @@ namespace OpenSim.Framework
2086 } 2080 }
2087 } 2081 }
2088 2082
2083 public static long TotalFireAndForgetCallsMade { get { return numTotalThreadFuncsCalled; } }
2084
2089 public static Dictionary<string, int> GetFireAndForgetCallsMade() 2085 public static Dictionary<string, int> GetFireAndForgetCallsMade()
2090 { 2086 {
2091 return new Dictionary<string, int>(m_fireAndForgetCallsMade); 2087 return new Dictionary<string, int>(m_fireAndForgetCallsMade);
2092 } 2088 }
2093 2089
2094 private static Dictionary<string, int> m_fireAndForgetCallsMade = new Dictionary<string, int>(); 2090 private static Dictionary<string, int> m_fireAndForgetCallsMade = new Dictionary<string, int>();
2095 2091
2092 public static void FireAndForget(System.Threading.WaitCallback callback)
2093 {
2094 FireAndForget(callback, null, null);
2095 }
2096
2096 public static void FireAndForget(System.Threading.WaitCallback callback, object obj) 2097 public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
2097 { 2098 {
2098 FireAndForget(callback, obj, null); 2099 FireAndForget(callback, obj, null);
2099 } 2100 }
2100 2101
2101 public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context) 2102 public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context)
2102 { 2103 {
2104 Interlocked.Increment(ref numTotalThreadFuncsCalled);
2105
2103 if (context != null) 2106 if (context != null)
2104 { 2107 {
2105 if (!m_fireAndForgetCallsMade.ContainsKey(context)) 2108 if (!m_fireAndForgetCallsMade.ContainsKey(context))
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index c8c00c8..516327c 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -1161,7 +1161,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1161 /// <param name="map">heightmap</param> 1161 /// <param name="map">heightmap</param>
1162 public virtual void SendLayerData(float[] map) 1162 public virtual void SendLayerData(float[] map)
1163 { 1163 {
1164 Util.FireAndForget(DoSendLayerData, m_scene.Heightmap.GetTerrainData()); 1164 Util.FireAndForget(DoSendLayerData, m_scene.Heightmap.GetTerrainData(), "LLClientView.DoSendLayerData");
1165 } 1165 }
1166 1166
1167 /// <summary> 1167 /// <summary>
@@ -1373,7 +1373,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1373 /// <param name="windSpeeds">16x16 array of wind speeds</param> 1373 /// <param name="windSpeeds">16x16 array of wind speeds</param>
1374 public virtual void SendWindData(Vector2[] windSpeeds) 1374 public virtual void SendWindData(Vector2[] windSpeeds)
1375 { 1375 {
1376 Util.FireAndForget(DoSendWindData, windSpeeds); 1376 Util.FireAndForget(DoSendWindData, windSpeeds, "LLClientView.SendWindData");
1377 } 1377 }
1378 1378
1379 /// <summary> 1379 /// <summary>
@@ -1382,7 +1382,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1382 /// <param name="windSpeeds">16x16 array of cloud densities</param> 1382 /// <param name="windSpeeds">16x16 array of cloud densities</param>
1383 public virtual void SendCloudData(float[] cloudDensity) 1383 public virtual void SendCloudData(float[] cloudDensity)
1384 { 1384 {
1385 Util.FireAndForget(DoSendCloudData, cloudDensity); 1385 Util.FireAndForget(DoSendCloudData, cloudDensity, "LLClientView.SendCloudData");
1386 } 1386 }
1387 1387
1388 /// <summary> 1388 /// <summary>
@@ -8093,7 +8093,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8093 { 8093 {
8094 // This requests the asset if needed 8094 // This requests the asset if needed
8095 HandleSimInventoryTransferRequestWithPermsCheck(sender, transfer); 8095 HandleSimInventoryTransferRequestWithPermsCheck(sender, transfer);
8096 }); 8096 }, null, "LLClientView.HandleTransferRequest");
8097
8097 return true; 8098 return true;
8098 } 8099 }
8099 } 8100 }
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
index b70d861..8f14806 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
@@ -732,7 +732,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
732 if (!m_udpServer.OqrEngine.IsRunning) 732 if (!m_udpServer.OqrEngine.IsRunning)
733 { 733 {
734 // Asynchronously run the callback 734 // Asynchronously run the callback
735 Util.FireAndForget(FireQueueEmpty, categories); 735 Util.FireAndForget(FireQueueEmpty, categories, "LLUDPClient.BeginFireQueueEmpty");
736 } 736 }
737 else 737 else
738 { 738 {
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index aa10301..61e1d6a 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -991,7 +991,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
991 // Fire this out on a different thread so that we don't hold up outgoing packet processing for 991 // Fire this out on a different thread so that we don't hold up outgoing packet processing for
992 // everybody else if this is being called due to an ack timeout. 992 // everybody else if this is being called due to an ack timeout.
993 // This is the same as processing as the async process of a logout request. 993 // This is the same as processing as the async process of a logout request.
994 Util.FireAndForget(o => DeactivateClientDueToTimeout(client, timeoutTicks)); 994 Util.FireAndForget(
995 o => DeactivateClientDueToTimeout(client, timeoutTicks), null, "LLUDPServer.DeactivateClientDueToTimeout");
995 996
996 return; 997 return;
997 } 998 }
@@ -1225,7 +1226,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1225 // buffer. 1226 // buffer.
1226 object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet }; 1227 object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
1227 1228
1228 Util.FireAndForget(HandleUseCircuitCode, array); 1229 Util.FireAndForget(HandleUseCircuitCode, array, "LLUDPServer.HandleUseCircuitCode");
1229 1230
1230 return; 1231 return;
1231 } 1232 }
@@ -1238,7 +1239,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1238 // buffer. 1239 // buffer.
1239 object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet }; 1240 object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
1240 1241
1241 Util.FireAndForget(HandleCompleteMovementIntoRegion, array); 1242 Util.FireAndForget(
1243 HandleCompleteMovementIntoRegion, array, "LLUDPServer.HandleCompleteMovementIntoRegion");
1242 1244
1243 return; 1245 return;
1244 } 1246 }
diff --git a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs
index 5cdcab9..47dcbcd 100644
--- a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs
+++ b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs
@@ -167,7 +167,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
167 167
168 // Do Decode! 168 // Do Decode!
169 if (decode) 169 if (decode)
170 Util.FireAndForget(delegate { Decode(assetID, j2kData); }); 170 Util.FireAndForget(delegate { Decode(assetID, j2kData); }, null, "J2KDecoderModule.BeginDecode");
171 } 171 }
172 } 172 }
173 173
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
index 9d6870f..5eca025 100644
--- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
@@ -302,7 +302,7 @@ namespace OpenSim.Region.CoreModules.Asset
302 } 302 }
303 303
304 Util.FireAndForget( 304 Util.FireAndForget(
305 delegate { WriteFileCache(filename, asset); }); 305 delegate { WriteFileCache(filename, asset); }, null, "FlotsamAssetCache.UpdateFileCache");
306 } 306 }
307 } 307 }
308 catch (Exception e) 308 catch (Exception e)
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index d8c159f..ea7481d 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -593,7 +593,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
593 593
594 if (sendTime < now) 594 if (sendTime < now)
595 { 595 {
596 Util.FireAndForget(o => SendAppearance(avatarID)); 596 Util.FireAndForget(o => SendAppearance(avatarID), null, "AvatarFactoryModule.SendAppearance");
597 m_sendqueue.Remove(avatarID); 597 m_sendqueue.Remove(avatarID);
598 } 598 }
599 } 599 }
@@ -611,7 +611,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
611 611
612 if (sendTime < now) 612 if (sendTime < now)
613 { 613 {
614 Util.FireAndForget(o => SaveAppearance(avatarID)); 614 Util.FireAndForget(o => SaveAppearance(avatarID), null, "AvatarFactoryModule.SaveAppearance");
615 m_savequeue.Remove(avatarID); 615 m_savequeue.Remove(avatarID);
616 } 616 }
617 } 617 }
@@ -1038,7 +1038,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
1038 client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++); 1038 client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++);
1039 else 1039 else
1040 m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId); 1040 m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId);
1041 }); 1041 }, null, "AvatarFactoryModule.OnClientRequestWearables");
1042 } 1042 }
1043 1043
1044 /// <summary> 1044 /// <summary>
diff --git a/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs b/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs
index 5725d67..5e35135 100644
--- a/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs
@@ -187,7 +187,7 @@ namespace OpenSim.Region.CoreModules.Avatar.BakedTextures
187 { 187 {
188 rc.Request(reqStream, m_Auth); 188 rc.Request(reqStream, m_Auth);
189 m_log.DebugFormat("[XBakes]: stored {0} textures for user {1}", data.Length, agentId); 189 m_log.DebugFormat("[XBakes]: stored {0} textures for user {1}", data.Length, agentId);
190 } 190 }, null, "XBakesModule.Store"
191 ); 191 );
192 } 192 }
193 } 193 }
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
index 31bcded..7ab568e 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
@@ -511,7 +511,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
511 511
512 // Notify about this user status 512 // Notify about this user status
513 StatusNotify(friendList, agentID, online); 513 StatusNotify(friendList, agentID, online);
514 } 514 }, null, "FriendsModule.StatusChange"
515 ); 515 );
516 } 516 }
517 } 517 }
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
index be12935..27b7376 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
@@ -660,7 +660,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
660 FriendsService.Delete(friendUUI, agentID.ToString()); 660 FriendsService.Delete(friendUUI, agentID.ToString());
661 661
662 // notify the exfriend's service 662 // notify the exfriend's service
663 Util.FireAndForget(delegate { Delete(exfriendID, agentID, friendUUI); }); 663 Util.FireAndForget(
664 delegate { Delete(exfriendID, agentID, friendUUI); }, null, "HGFriendsModule.DeleteFriendshipForeignFriend");
664 665
665 m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentID, friendUUI); 666 m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentID, friendUUI);
666 return true; 667 return true;
@@ -678,7 +679,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
678 FriendsService.Delete(agentUUI, exfriendID.ToString()); 679 FriendsService.Delete(agentUUI, exfriendID.ToString());
679 680
680 // notify the agent's service? 681 // notify the agent's service?
681 Util.FireAndForget(delegate { Delete(agentID, exfriendID, agentUUI); }); 682 Util.FireAndForget(
683 delegate { Delete(agentID, exfriendID, agentUUI); }, null, "HGFriendsModule.DeleteFriendshipLocalFriend");
682 684
683 m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentUUI, exfriendID); 685 m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentUUI, exfriendID);
684 return true; 686 return true;
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs
index 6f3c80a..a1b918a 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs
@@ -213,7 +213,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
213 HandleUndeliverableMessage(im, result); 213 HandleUndeliverableMessage(im, result);
214 else 214 else
215 result(success); 215 result(success);
216 }); 216 }, null, "HGMessageTransferModule.SendInstantMessage");
217 217
218 return; 218 return;
219 } 219 }
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
index c1795f6..546a121 100644
--- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
@@ -194,7 +194,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
194 Util.FireAndForget(delegate 194 Util.FireAndForget(delegate
195 { 195 {
196 GetImageAssets(((IScenePresence)obj).UUID); 196 GetImageAssets(((IScenePresence)obj).UUID);
197 }); 197 }, null, "UserProfileModule.GetImageAssets");
198 } 198 }
199 199
200 /// <summary> 200 /// <summary>
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
index 0c0cdf2..72d6bac 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
@@ -169,7 +169,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
169 AgentCircuitData aCircuit = Scene.AuthenticateHandler.GetAgentCircuitData(so.AttachedAvatar); 169 AgentCircuitData aCircuit = Scene.AuthenticateHandler.GetAgentCircuitData(so.AttachedAvatar);
170 if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0) 170 if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0)
171 { 171 {
172 if (aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServerURI")) 172 if (aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServRezerURI"))
173 { 173 {
174 string url = aCircuit.ServiceURLs["AssetServerURI"].ToString(); 174 string url = aCircuit.ServiceURLs["AssetServerURI"].ToString();
175 m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Incoming attachment {0} for HG user {1} with asset server {2}", so.Name, so.AttachedAvatar, url); 175 m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Incoming attachment {0} for HG user {1} with asset server {2}", so.Name, so.AttachedAvatar, url);
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
index 7695404..7fcfc74 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
@@ -295,7 +295,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
295 295
296 if (asset != null) 296 if (asset != null)
297 { 297 {
298 Util.FireAndForget(delegate { handler(id, sender, asset); }); 298 Util.FireAndForget(delegate { handler(id, sender, asset); }, null, "HGAssetBroker.GotFromCache");
299 return true; 299 return true;
300 } 300 }
301 301
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
index 97b7559..5f34450 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
@@ -236,7 +236,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
236 236
237 if (asset != null) 237 if (asset != null)
238 { 238 {
239 Util.FireAndForget(delegate { handler(id, sender, asset); }); 239 Util.FireAndForget(
240 o => handler(id, sender, asset), null, "LocalAssetServiceConnector.GotFromCacheCallback");
240 return true; 241 return true;
241 } 242 }
242 } 243 }
@@ -249,7 +250,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
249// if (null == a) 250// if (null == a)
250// m_log.WarnFormat("[LOCAL ASSET SERVICES CONNECTOR]: Could not asynchronously find asset with id {0}", id); 251// m_log.WarnFormat("[LOCAL ASSET SERVICES CONNECTOR]: Could not asynchronously find asset with id {0}", id);
251 252
252 Util.FireAndForget(delegate { handler(assetID, s, a); }); 253 Util.FireAndForget(
254 o => handler(assetID, s, a), null, "LocalAssetServiceConnector.GotFromServiceCallback");
253 }); 255 });
254 } 256 }
255 257
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
index bfa3b9a..9db5309 100644
--- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
@@ -226,7 +226,10 @@ namespace OpenSim.Region.Framework.Scenes
226 // We must take a copy here since handle is acts like a reference when used in an iterator. 226 // We must take a copy here since handle is acts like a reference when used in an iterator.
227 // This leads to race conditions if directly passed to SendCloseChildAgent with more than one neighbour region. 227 // This leads to race conditions if directly passed to SendCloseChildAgent with more than one neighbour region.
228 ulong handleCopy = handle; 228 ulong handleCopy = handle;
229 Util.FireAndForget((o) => { SendCloseChildAgent(agentID, handleCopy, auth_code); }); 229 Util.FireAndForget(
230 o => SendCloseChildAgent(agentID, handleCopy, auth_code),
231 null,
232 "SceneCommunicationService.SendCloseChildAgentConnections");
230 } 233 }
231 } 234 }
232 235
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 9481f71..1d234e2 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1235,7 +1235,8 @@ namespace OpenSim.Region.Framework.Scenes
1235 string.Format("Rez attachments for {0} in {1}", Name, Scene.Name), 1235 string.Format("Rez attachments for {0} in {1}", Name, Scene.Name),
1236 null); 1236 null);
1237 else 1237 else
1238 Util.FireAndForget(o => Scene.AttachmentsModule.RezAttachments(this)); 1238 Util.FireAndForget(
1239 o => Scene.AttachmentsModule.RezAttachments(this), null, "ScenePresence.RezAttachmentsOnLogin");
1239 } 1240 }
1240 } 1241 }
1241 else 1242 else
@@ -1338,7 +1339,7 @@ namespace OpenSim.Region.Framework.Scenes
1338 1339
1339 UseFakeGroupTitle = false; 1340 UseFakeGroupTitle = false;
1340 SendAvatarDataToAllClients(false); 1341 SendAvatarDataToAllClients(false);
1341 }); 1342 }, null, "Scenepresence.ForceViewersUpdateName");
1342 } 1343 }
1343 1344
1344 public int GetStateSource() 1345 public int GetStateSource()
@@ -3645,7 +3646,8 @@ namespace OpenSim.Region.Framework.Scenes
3645 agentpos.CopyFrom(cadu, ControllingClient.SessionId); 3646 agentpos.CopyFrom(cadu, ControllingClient.SessionId);
3646 3647
3647 // Let's get this out of the update loop 3648 // Let's get this out of the update loop
3648 Util.FireAndForget(delegate { m_scene.SendOutChildAgentUpdates(agentpos, this); }); 3649 Util.FireAndForget(
3650 o => m_scene.SendOutChildAgentUpdates(agentpos, this), null, "ScenePresence.SendOutChildAgentUpdates");
3649 } 3651 }
3650 } 3652 }
3651 3653
@@ -4515,7 +4517,7 @@ namespace OpenSim.Region.Framework.Scenes
4515 } 4517 }
4516 } 4518 }
4517 } 4519 }
4518 }); 4520 }, null, "ScenePresence.SendScriptEventToAttachments");
4519 } 4521 }
4520 4522
4521 /// <summary> 4523 /// <summary>
diff --git a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs
index a6c12fd..b69676b 100644
--- a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs
@@ -323,7 +323,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
323 public UUID JsonRezAtRoot(UUID hostID, UUID scriptID, string item, Vector3 pos, Vector3 vel, Quaternion rot, string param) 323 public UUID JsonRezAtRoot(UUID hostID, UUID scriptID, string item, Vector3 pos, Vector3 vel, Quaternion rot, string param)
324 { 324 {
325 UUID reqID = UUID.Random(); 325 UUID reqID = UUID.Random();
326 Util.FireAndForget(o => DoJsonRezObject(hostID, scriptID, reqID, item, pos, vel, rot, param)); 326 Util.FireAndForget(
327 o => DoJsonRezObject(hostID, scriptID, reqID, item, pos, vel, rot, param), null, "JsonStoreScriptModule.DoJsonRezObject");
327 return reqID; 328 return reqID;
328 } 329 }
329 330
@@ -336,7 +337,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
336 public UUID JsonReadNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string notecardIdentifier) 337 public UUID JsonReadNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string notecardIdentifier)
337 { 338 {
338 UUID reqID = UUID.Random(); 339 UUID reqID = UUID.Random();
339 Util.FireAndForget(o => DoJsonReadNotecard(reqID, hostID, scriptID, storeID, path, notecardIdentifier)); 340 Util.FireAndForget(
341 o => DoJsonReadNotecard(reqID, hostID, scriptID, storeID, path, notecardIdentifier), null, "JsonStoreScriptModule.JsonReadNotecard");
340 return reqID; 342 return reqID;
341 } 343 }
342 344
@@ -349,7 +351,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
349 public UUID JsonWriteNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string name) 351 public UUID JsonWriteNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string name)
350 { 352 {
351 UUID reqID = UUID.Random(); 353 UUID reqID = UUID.Random();
352 Util.FireAndForget(delegate(object o) { DoJsonWriteNotecard(reqID,hostID,scriptID,storeID,path,name); }); 354 Util.FireAndForget(
355 o => DoJsonWriteNotecard(reqID,hostID,scriptID,storeID,path,name), null, "JsonStoreScriptModule.DoJsonWriteNotecard");
353 return reqID; 356 return reqID;
354 } 357 }
355 358
@@ -464,7 +467,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
464 public UUID JsonTakeValue(UUID hostID, UUID scriptID, UUID storeID, string path) 467 public UUID JsonTakeValue(UUID hostID, UUID scriptID, UUID storeID, string path)
465 { 468 {
466 UUID reqID = UUID.Random(); 469 UUID reqID = UUID.Random();
467 Util.FireAndForget(delegate(object o) { DoJsonTakeValue(scriptID,reqID,storeID,path,false); }); 470 Util.FireAndForget(
471 o => DoJsonTakeValue(scriptID,reqID,storeID,path,false), null, "JsonStoreScriptModule.DoJsonTakeValue");
468 return reqID; 472 return reqID;
469 } 473 }
470 474
@@ -472,7 +476,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
472 public UUID JsonTakeValueJson(UUID hostID, UUID scriptID, UUID storeID, string path) 476 public UUID JsonTakeValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
473 { 477 {
474 UUID reqID = UUID.Random(); 478 UUID reqID = UUID.Random();
475 Util.FireAndForget(delegate(object o) { DoJsonTakeValue(scriptID,reqID,storeID,path,true); }); 479 Util.FireAndForget(
480 o => DoJsonTakeValue(scriptID,reqID,storeID,path,true), null, "JsonStoreScriptModule.DoJsonTakeValueJson");
476 return reqID; 481 return reqID;
477 } 482 }
478 483
@@ -485,7 +490,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
485 public UUID JsonReadValue(UUID hostID, UUID scriptID, UUID storeID, string path) 490 public UUID JsonReadValue(UUID hostID, UUID scriptID, UUID storeID, string path)
486 { 491 {
487 UUID reqID = UUID.Random(); 492 UUID reqID = UUID.Random();
488 Util.FireAndForget(delegate(object o) { DoJsonReadValue(scriptID,reqID,storeID,path,false); }); 493 Util.FireAndForget(
494 o => DoJsonReadValue(scriptID,reqID,storeID,path,false), null, "JsonStoreScriptModule.DoJsonReadValue");
489 return reqID; 495 return reqID;
490 } 496 }
491 497
@@ -493,7 +499,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
493 public UUID JsonReadValueJson(UUID hostID, UUID scriptID, UUID storeID, string path) 499 public UUID JsonReadValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
494 { 500 {
495 UUID reqID = UUID.Random(); 501 UUID reqID = UUID.Random();
496 Util.FireAndForget(delegate(object o) { DoJsonReadValue(scriptID,reqID,storeID,path,true); }); 502 Util.FireAndForget(
503 o => DoJsonReadValue(scriptID,reqID,storeID,path,true), null, "JsonStoreScriptModule.DoJsonReadValueJson");
497 return reqID; 504 return reqID;
498 } 505 }
499 506
diff --git a/OpenSim/Region/OptionalModules/ViewerSupport/DynamicMenuModule.cs b/OpenSim/Region/OptionalModules/ViewerSupport/DynamicMenuModule.cs
index 6e0a80a..d37369c 100644
--- a/OpenSim/Region/OptionalModules/ViewerSupport/DynamicMenuModule.cs
+++ b/OpenSim/Region/OptionalModules/ViewerSupport/DynamicMenuModule.cs
@@ -294,7 +294,8 @@ namespace OpenSim.Region.OptionalModules.ViewerSupport
294 for (int i = 0 ; i < selection.Count ; i++) 294 for (int i = 0 ; i < selection.Count ; i++)
295 sel.Add(selection[i].AsUInteger()); 295 sel.Add(selection[i].AsUInteger());
296 296
297 Util.FireAndForget(x => { m_module.HandleMenuSelection(action, m_agentID, sel); }); 297 Util.FireAndForget(
298 x => { m_module.HandleMenuSelection(action, m_agentID, sel); }, null, "DynamicMenuModule.HandleMenuSelection");
298 299
299 Encoding encoding = Encoding.UTF8; 300 Encoding encoding = Encoding.UTF8;
300 return encoding.GetBytes(OSDParser.SerializeLLSDXmlString(new OSD())); 301 return encoding.GetBytes(OSDParser.SerializeLLSDXmlString(new OSD()));
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index e347fdc..f5a25d6 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -3343,7 +3343,7 @@ Console.WriteLine(" JointCreateFixed");
3343 RequestAssetDelegate assetProvider = _parent_scene.RequestAssetMethod; 3343 RequestAssetDelegate assetProvider = _parent_scene.RequestAssetMethod;
3344 if (assetProvider != null) 3344 if (assetProvider != null)
3345 assetProvider(_pbs.SculptTexture, MeshAssetReceived); 3345 assetProvider(_pbs.SculptTexture, MeshAssetReceived);
3346 }); 3346 }, null, "ODEPrim.CheckMeshAsset");
3347 } 3347 }
3348 } 3348 }
3349 3349
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index e7ba7a4..97e3eeb 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2979,7 +2979,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2979 2979
2980 money.ObjectGiveMoney( 2980 money.ObjectGiveMoney(
2981 m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount); 2981 m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
2982 }); 2982 }, null, "LSL_Api.llGiveMoney");
2983 } 2983 }
2984 2984
2985 public void llMakeExplosion(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset) 2985 public void llMakeExplosion(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
@@ -3075,7 +3075,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3075 } 3075 }
3076 // Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay) 3076 // Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
3077 } 3077 }
3078 }); 3078 }, null, "LSL_Api.llRezAtRoot");
3079 3079
3080 //ScriptSleep((int)((groupmass * velmag) / 10)); 3080 //ScriptSleep((int)((groupmass * velmag) / 10));
3081 ScriptSleep(100); 3081 ScriptSleep(100);
@@ -3270,7 +3270,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3270 /// </remarks> 3270 /// </remarks>
3271 public void DetachFromAvatar() 3271 public void DetachFromAvatar()
3272 { 3272 {
3273 Util.FireAndForget(DetachWrapper, m_host); 3273 Util.FireAndForget(DetachWrapper, m_host, "LSL_Api.DetachFromAvatar");
3274 } 3274 }
3275 3275
3276 private void DetachWrapper(object o) 3276 private void DetachWrapper(object o)
@@ -12421,7 +12421,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
12421 new LSL_String(replydata) }, 12421 new LSL_String(replydata) },
12422 new DetectParams[0])); 12422 new DetectParams[0]));
12423 } 12423 }
12424 }); 12424 }, null, "LSL_Api.llTransferLindenDollars");
12425 12425
12426 return txn.ToString(); 12426 return txn.ToString();
12427 } 12427 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 704ff15..10ddf14 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -790,9 +790,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
790 790
791 // We will launch the teleport on a new thread so that when the script threads are terminated 791 // We will launch the teleport on a new thread so that when the script threads are terminated
792 // before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting. 792 // before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting.
793 Util.FireAndForget(o => World.RequestTeleportLocation( 793 Util.FireAndForget(
794 presence.ControllingClient, regionName, position, 794 o => World.RequestTeleportLocation(
795 lookat, (uint)TPFlags.ViaLocation)); 795 presence.ControllingClient, regionName, position,
796 lookat, (uint)TPFlags.ViaLocation),
797 null, "OSSL_Api.TeleportAgentByRegionCoords");
796 798
797 ScriptSleep(5000); 799 ScriptSleep(5000);
798 800
@@ -836,9 +838,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
836 838
837 // We will launch the teleport on a new thread so that when the script threads are terminated 839 // We will launch the teleport on a new thread so that when the script threads are terminated
838 // before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting. 840 // before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting.
839 Util.FireAndForget(o => World.RequestTeleportLocation( 841 Util.FireAndForget(
840 presence.ControllingClient, regionHandle, 842 o => World.RequestTeleportLocation(
841 position, lookat, (uint)TPFlags.ViaLocation)); 843 presence.ControllingClient, regionHandle,
844 position, lookat, (uint)TPFlags.ViaLocation),
845 null, "OSSL_Api.TeleportAgentByRegionName");
842 846
843 ScriptSleep(5000); 847 ScriptSleep(5000);
844 848
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
index da2bfeb..81c9df2 100644
--- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
+++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
@@ -182,7 +182,8 @@ namespace OpenSim.Server.Handlers.Simulation
182 if (action.Equals("release")) 182 if (action.Equals("release"))
183 ReleaseAgent(regionID, id); 183 ReleaseAgent(regionID, id);
184 else 184 else
185 Util.FireAndForget(delegate { m_SimulationService.CloseAgent(destination, id, auth_token); }); 185 Util.FireAndForget(
186 o => m_SimulationService.CloseAgent(destination, id, auth_token), null, "AgentHandler.DoAgentDelete");
186 187
187 responsedata["int_response_code"] = HttpStatusCode.OK; 188 responsedata["int_response_code"] = HttpStatusCode.OK;
188 responsedata["str_response_string"] = "OpenSim agent " + id.ToString(); 189 responsedata["str_response_string"] = "OpenSim agent " + id.ToString();
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
index 95e4bab..cd4781d 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
@@ -69,7 +69,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
69 Util.FireAndForget(delegate(object o) 69 Util.FireAndForget(delegate(object o)
70 { 70 {
71 m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat); 71 m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
72 }); 72 }, null, "SimianActivityDetector.SetLastPositionOnMakeRootAgent");
73 } 73 }
74 74
75 public void OnNewClient(IClientAPI client) 75 public void OnNewClient(IClientAPI client)
@@ -94,7 +94,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
94 Util.FireAndForget(delegate(object o) 94 Util.FireAndForget(delegate(object o)
95 { 95 {
96 m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat); 96 m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
97 }); 97 }, null, "SimianActivityDetector.SetLastPositionOnEnteringNewParcel");
98 } 98 }
99 } 99 }
100} \ No newline at end of file 100} \ No newline at end of file
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
index 01cbf91..9ad4a7a 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
@@ -225,7 +225,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
225 { 225 {
226 AssetBase asset = SimianGetOperation(id); 226 AssetBase asset = SimianGetOperation(id);
227 handler(id, sender, asset); 227 handler(id, sender, asset);
228 } 228 }, null, "SimianAssetServiceConnector.GetFromService"
229 ); 229 );
230 230
231 return true; 231 return true;
diff --git a/OpenSim/Services/HypergridService/HGFriendsService.cs b/OpenSim/Services/HypergridService/HGFriendsService.cs
index a8bcfb2..6e35a88 100644
--- a/OpenSim/Services/HypergridService/HGFriendsService.cs
+++ b/OpenSim/Services/HypergridService/HGFriendsService.cs
@@ -198,7 +198,8 @@ namespace OpenSim.Services.HypergridService
198 // So let's send back the call, but start a thread to continue 198 // So let's send back the call, but start a thread to continue
199 // with the verification and the actual action. 199 // with the verification and the actual action.
200 200
201 Util.FireAndForget(delegate { ProcessFriendshipOffered(fromID, fromName, toID, message); }); 201 Util.FireAndForget(
202 o => ProcessFriendshipOffered(fromID, fromName, toID, message), null, "HGFriendsService.ProcessFriendshipOffered");
202 203
203 return true; 204 return true;
204 } 205 }
diff --git a/OpenSim/Services/MapImageService/MapImageService.cs b/OpenSim/Services/MapImageService/MapImageService.cs
index c07e034..a816411 100644
--- a/OpenSim/Services/MapImageService/MapImageService.cs
+++ b/OpenSim/Services/MapImageService/MapImageService.cs
@@ -166,7 +166,8 @@ namespace OpenSim.Services.MapImageService
166 // m_log.DebugFormat("{0} UpdateMultiResolutionFilesAsync: scheduling update for <{1},{2}>", LogHeader, x, y); 166 // m_log.DebugFormat("{0} UpdateMultiResolutionFilesAsync: scheduling update for <{1},{2}>", LogHeader, x, y);
167 multiRezToBuild.Enqueue(new mapToMultiRez(x, y)); 167 multiRezToBuild.Enqueue(new mapToMultiRez(x, y));
168 if (multiRezToBuild.Count == 1) 168 if (multiRezToBuild.Count == 1)
169 Util.FireAndForget(DoUpdateMultiResolutionFilesAsync); 169 Util.FireAndForget(
170 DoUpdateMultiResolutionFilesAsync, null, "MapImageService.DoUpdateMultiResolutionFilesAsync");
170 } 171 }
171 172
172 return true; 173 return true;
diff --git a/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs b/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs
index 9b3cc93..0ab407e 100644
--- a/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs
+++ b/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs
@@ -78,7 +78,7 @@ namespace OpenSim.Tests.Stress
78 Drawer d = new Drawer(this, i); 78 Drawer d = new Drawer(this, i);
79 drawers.Add(d); 79 drawers.Add(d);
80 Console.WriteLine("Starting drawer {0}", i); 80 Console.WriteLine("Starting drawer {0}", i);
81 Util.FireAndForget(o => d.Draw()); 81 Util.FireAndForget(o => d.Draw(), null, "VectorRenderModuleStressTests.TestConcurrentRepeatedDraw");
82 } 82 }
83 83
84 Thread.Sleep(10 * 60 * 1000); 84 Thread.Sleep(10 * 60 * 1000);