From 97a471cb357029e6f93c00ced5a7e6db79d783be Mon Sep 17 00:00:00 2001 From: Roger Kirkman Date: Thu, 5 May 2016 15:21:15 +0100 Subject: [PATCH 1/3] Fix crash due to setting Thread.name after thread start. Signed-off-by: Diva Canto --- OpenSim/Framework/Monitoring/WorkManager.cs | 5 +++-- ThirdParty/SmartThreadPool/SmartThreadPool.cs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/OpenSim/Framework/Monitoring/WorkManager.cs b/OpenSim/Framework/Monitoring/WorkManager.cs index d1a74ce70a..a7a03a0c13 100644 --- a/OpenSim/Framework/Monitoring/WorkManager.cs +++ b/OpenSim/Framework/Monitoring/WorkManager.cs @@ -121,7 +121,8 @@ namespace OpenSim.Framework.Monitoring Thread thread = new Thread(start); thread.Priority = priority; thread.IsBackground = isBackground; - + thread.Name = name; + Watchdog.ThreadWatchdogInfo twi = new Watchdog.ThreadWatchdogInfo(thread, timeout, name) { AlarmIfTimeout = alarmIfTimeout, AlarmMethod = alarmMethod }; @@ -129,7 +130,7 @@ namespace OpenSim.Framework.Monitoring Watchdog.AddThread(twi, name, log:log); thread.Start(); - thread.Name = name; + return thread; } diff --git a/ThirdParty/SmartThreadPool/SmartThreadPool.cs b/ThirdParty/SmartThreadPool/SmartThreadPool.cs index 615518ecf1..9043d3a1bb 100644 --- a/ThirdParty/SmartThreadPool/SmartThreadPool.cs +++ b/ThirdParty/SmartThreadPool/SmartThreadPool.cs @@ -689,9 +689,10 @@ namespace Amib.Threading #if !(_SILVERLIGHT) && !(WINDOWS_PHONE) workerThread.Priority = _stpStartInfo.ThreadPriority; #endif - workerThread.Start(); workerThread.Name = string.Format("STP:{0}:{1}", Name, _threadCounter); - ++_threadCounter; + workerThread.Start(); + + ++_threadCounter; // Add it to the dictionary and update its creation time. _workerThreads[workerThread] = new ThreadEntry(this); From 9e21647011ee733cc244ea948e5beabba13e4cd3 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 16 May 2016 19:36:20 -0700 Subject: [PATCH 2/3] Mantis #7878 -- Landmarks were not being created in HGSuitcaseInventory --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 7 +++++++ OpenSim/Region/Framework/Scenes/SceneGraph.cs | 1 + 2 files changed, 8 insertions(+) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index d4a929c611..c2002a3f2f 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -187,6 +187,13 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess InventoryFolderBase f = new InventoryFolderBase(folderID, remoteClient.AgentId); InventoryFolderBase folder = m_Scene.InventoryService.GetFolder(f); + if (folder == null) + { + folder = m_Scene.InventoryService.GetFolderForType(remoteClient.AgentId, (FolderType)invType); + if (folder != null) + m_log.DebugFormat("[INVENTORY ACCESS MODULE]: Requested folder not found but found folder for type {0}", invType); + } + if (folder == null || folder.Owner != remoteClient.AgentId) return; diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 2ecb55b427..f9f795f0b4 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -219,6 +219,7 @@ namespace OpenSim.Region.Framework.Scenes // position). // // Therefore, JointMoved and JointDeactivated events will be fired as a result of the following Simulate(). + return PhysicsScene.Simulate((float)elapsed); } From 057d1b2a6e61e4a6d94fa16a7e8d5fc43c44789f Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 16 May 2016 21:57:19 -0700 Subject: [PATCH 3/3] Minor improvement over the previous commit -- make sure the code exists in the FolderType enum --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index c2002a3f2f..ba8b1ee0f1 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -187,7 +187,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess InventoryFolderBase f = new InventoryFolderBase(folderID, remoteClient.AgentId); InventoryFolderBase folder = m_Scene.InventoryService.GetFolder(f); - if (folder == null) + if (folder == null && Enum.IsDefined(typeof(FolderType), (sbyte)invType)) { folder = m_Scene.InventoryService.GetFolderForType(remoteClient.AgentId, (FolderType)invType); if (folder != null)