diff options
4 files changed, 63 insertions, 39 deletions
diff --git a/OpenSim/Framework/TaskInventoryDictionary.cs b/OpenSim/Framework/TaskInventoryDictionary.cs index 4b9a509..6b65fba 100644 --- a/OpenSim/Framework/TaskInventoryDictionary.cs +++ b/OpenSim/Framework/TaskInventoryDictionary.cs | |||
@@ -30,6 +30,7 @@ using System.Collections.Generic; | |||
30 | using System.Threading; | 30 | using System.Threading; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using System.Xml; | 32 | using System.Xml; |
33 | using System.Diagnostics; | ||
33 | using System.Xml.Schema; | 34 | using System.Xml.Schema; |
34 | using System.Xml.Serialization; | 35 | using System.Xml.Serialization; |
35 | using log4net; | 36 | using log4net; |
@@ -90,6 +91,19 @@ namespace OpenSim.Framework | |||
90 | if (m_itemLock.RecursiveReadCount > 0) | 91 | if (m_itemLock.RecursiveReadCount > 0) |
91 | { | 92 | { |
92 | m_log.Error("[TaskInventoryDictionary] Recursive read lock requested. This should not happen and means something needs to be fixed. For now though, it's safe to continue."); | 93 | m_log.Error("[TaskInventoryDictionary] Recursive read lock requested. This should not happen and means something needs to be fixed. For now though, it's safe to continue."); |
94 | try | ||
95 | { | ||
96 | StackTrace stackTrace = new StackTrace(); // get call stack | ||
97 | StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) | ||
98 | |||
99 | // write call stack method names | ||
100 | foreach (StackFrame stackFrame in stackFrames) | ||
101 | { | ||
102 | m_log.Error("[SceneObjectGroup.m_parts] "+(stackFrame.GetMethod().Name); // write method name | ||
103 | } | ||
104 | } | ||
105 | catch | ||
106 | {} | ||
93 | m_itemLock.ExitReadLock(); | 107 | m_itemLock.ExitReadLock(); |
94 | } | 108 | } |
95 | if (m_itemLock.RecursiveWriteCount > 0) | 109 | if (m_itemLock.RecursiveWriteCount > 0) |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs index e54ee02..ebfba2b 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs | |||
@@ -57,9 +57,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests | |||
57 | config.Configs["Modules"].Set("GridServices", "LocalGridServicesConnector"); | 57 | config.Configs["Modules"].Set("GridServices", "LocalGridServicesConnector"); |
58 | config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Services.GridService.dll:GridService"); | 58 | config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Services.GridService.dll:GridService"); |
59 | config.Configs["GridService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); | 59 | config.Configs["GridService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); |
60 | config.Configs["GridService"].Set("Region_Test_Region_1", "DefaultRegion"); | 60 | config.Configs["GridService"].Set("Region_Test_Region_1", "DefaultRegion"); |
61 | config.Configs["GridService"].Set("Region_Test_Region_2", "FallbackRegion"); | 61 | config.Configs["GridService"].Set("Region_Test_Region_2", "FallbackRegion"); |
62 | config.Configs["GridService"].Set("Region_Test_Region_3", "FallbackRegion"); | 62 | config.Configs["GridService"].Set("Region_Test_Region_3", "FallbackRegion"); |
63 | config.Configs["GridService"].Set("Region_Other_Region_4", "FallbackRegion"); | 63 | config.Configs["GridService"].Set("Region_Other_Region_4", "FallbackRegion"); |
64 | 64 | ||
65 | m_LocalConnector = new LocalGridServicesConnector(config); | 65 | m_LocalConnector = new LocalGridServicesConnector(config); |
@@ -128,8 +128,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests | |||
128 | Assert.IsNotNull(result, "Retrieved GetRegionByName is null"); | 128 | Assert.IsNotNull(result, "Retrieved GetRegionByName is null"); |
129 | Assert.That(result.RegionName, Is.EqualTo("Test Region 1"), "Retrieved region's name does not match"); | 129 | Assert.That(result.RegionName, Is.EqualTo("Test Region 1"), "Retrieved region's name does not match"); |
130 | 130 | ||
131 | m_LocalConnector.RegisterRegion(UUID.Zero, r2); | 131 | m_LocalConnector.RegisterRegion(UUID.Zero, r2); |
132 | m_LocalConnector.RegisterRegion(UUID.Zero, r3); | 132 | m_LocalConnector.RegisterRegion(UUID.Zero, r3); |
133 | m_LocalConnector.RegisterRegion(UUID.Zero, r4); | 133 | m_LocalConnector.RegisterRegion(UUID.Zero, r4); |
134 | 134 | ||
135 | result = m_LocalConnector.GetRegionByUUID(UUID.Zero, new UUID(1)); | 135 | result = m_LocalConnector.GetRegionByUUID(UUID.Zero, new UUID(1)); |
@@ -154,38 +154,38 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests | |||
154 | Assert.IsNotNull(results, "Retrieved GetRegionRange collection is null"); | 154 | Assert.IsNotNull(results, "Retrieved GetRegionRange collection is null"); |
155 | Assert.That(results.Count, Is.EqualTo(2), "Retrieved neighbour collection is not the number expected"); | 155 | Assert.That(results.Count, Is.EqualTo(2), "Retrieved neighbour collection is not the number expected"); |
156 | 156 | ||
157 | results = m_LocalConnector.GetDefaultRegions(UUID.Zero); | 157 | results = m_LocalConnector.GetDefaultRegions(UUID.Zero); |
158 | Assert.IsNotNull(results, "Retrieved GetDefaultRegions collection is null"); | 158 | Assert.IsNotNull(results, "Retrieved GetDefaultRegions collection is null"); |
159 | Assert.That(results.Count, Is.EqualTo(1), "Retrieved default regions collection has not the expected size"); | 159 | Assert.That(results.Count, Is.EqualTo(1), "Retrieved default regions collection has not the expected size"); |
160 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(1)), "Retrieved default region's UUID does not match"); | 160 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(1)), "Retrieved default region's UUID does not match"); |
161 | 161 | ||
162 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r1.RegionLocX, r1.RegionLocY); | 162 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r1.RegionLocX, r1.RegionLocY); |
163 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 1 is null"); | 163 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 1 is null"); |
164 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 1 has not the expected size"); | 164 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 1 has not the expected size"); |
165 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions for default region are not in the expected order 2-4-3"); | 165 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions for default region are not in the expected order 2-4-3"); |
166 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions for default region are not in the expected order 2-4-3"); | 166 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions for default region are not in the expected order 2-4-3"); |
167 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions for default region are not in the expected order 2-4-3"); | 167 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions for default region are not in the expected order 2-4-3"); |
168 | 168 | ||
169 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r2.RegionLocX, r2.RegionLocY); | 169 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r2.RegionLocX, r2.RegionLocY); |
170 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 2 is null"); | 170 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 2 is null"); |
171 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 2 has not the expected size"); | 171 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 2 has not the expected size"); |
172 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions are not in the expected order 2-4-3"); | 172 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions are not in the expected order 2-4-3"); |
173 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions are not in the expected order 2-4-3"); | 173 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions are not in the expected order 2-4-3"); |
174 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions are not in the expected order 2-4-3"); | 174 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions are not in the expected order 2-4-3"); |
175 | 175 | ||
176 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r3.RegionLocX, r3.RegionLocY); | 176 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r3.RegionLocX, r3.RegionLocY); |
177 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 3 is null"); | 177 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 3 is null"); |
178 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 3 has not the expected size"); | 178 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 3 has not the expected size"); |
179 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions are not in the expected order 3-4-2"); | 179 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions are not in the expected order 3-4-2"); |
180 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions are not in the expected order 3-4-2"); | 180 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions are not in the expected order 3-4-2"); |
181 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions are not in the expected order 3-4-2"); | 181 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions are not in the expected order 3-4-2"); |
182 | 182 | ||
183 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r4.RegionLocX, r4.RegionLocY); | 183 | results = m_LocalConnector.GetFallbackRegions(UUID.Zero, r4.RegionLocX, r4.RegionLocY); |
184 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 4 is null"); | 184 | Assert.IsNotNull(results, "Retrieved GetFallbackRegions collection for region 4 is null"); |
185 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 4 has not the expected size"); | 185 | Assert.That(results.Count, Is.EqualTo(3), "Retrieved fallback regions collection for region 4 has not the expected size"); |
186 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions are not in the expected order 4-3-2"); | 186 | Assert.That(results[0].RegionID, Is.EqualTo(new UUID(4)), "Retrieved fallback regions are not in the expected order 4-3-2"); |
187 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions are not in the expected order 4-3-2"); | 187 | Assert.That(results[1].RegionID, Is.EqualTo(new UUID(3)), "Retrieved fallback regions are not in the expected order 4-3-2"); |
188 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions are not in the expected order 4-3-2"); | 188 | Assert.That(results[2].RegionID, Is.EqualTo(new UUID(2)), "Retrieved fallback regions are not in the expected order 4-3-2"); |
189 | 189 | ||
190 | results = m_LocalConnector.GetHyperlinks(UUID.Zero); | 190 | results = m_LocalConnector.GetHyperlinks(UUID.Zero); |
191 | Assert.IsNotNull(results, "Retrieved GetHyperlinks list is null"); | 191 | Assert.IsNotNull(results, "Retrieved GetHyperlinks list is null"); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index b179646..ffe2094 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -29,6 +29,7 @@ using System; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Drawing; | 30 | using System.Drawing; |
31 | using System.IO; | 31 | using System.IO; |
32 | using System.Diagnostics; | ||
32 | using System.Threading; | 33 | using System.Threading; |
33 | using System.Xml; | 34 | using System.Xml; |
34 | using System.Xml.Serialization; | 35 | using System.Xml.Serialization; |
@@ -138,6 +139,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
138 | m_log.Error("[SceneObjectGroup.m_parts] Recursive read lock requested. This should not happen and means something needs to be fixed. For now though, it's safe to continue."); | 139 | m_log.Error("[SceneObjectGroup.m_parts] Recursive read lock requested. This should not happen and means something needs to be fixed. For now though, it's safe to continue."); |
139 | try | 140 | try |
140 | { | 141 | { |
142 | StackTrace stackTrace = new StackTrace(); // get call stack | ||
143 | StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) | ||
144 | |||
145 | // write call stack method names | ||
146 | foreach (StackFrame stackFrame in stackFrames) | ||
147 | { | ||
148 | m_log.Error("[SceneObjectGroup.m_parts] "+(stackFrame.GetMethod().Name); // write method name | ||
149 | } | ||
150 | |||
141 | m_partsLock.ExitReadLock(); | 151 | m_partsLock.ExitReadLock(); |
142 | } | 152 | } |
143 | catch { } // Ignore errors, to allow resync | 153 | catch { } // Ignore errors, to allow resync |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index ba1f562..fbe1da9 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -3332,7 +3332,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3332 | texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f); | 3332 | texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f); |
3333 | tex.FaceTextures[face].RGBA = texcolor; | 3333 | tex.FaceTextures[face].RGBA = texcolor; |
3334 | UpdateTexture(tex); | 3334 | UpdateTexture(tex); |
3335 | TriggerScriptChangedEvent(Changed.COLOR); | 3335 | TriggerScriptChangedEvent(Changed.COLOR); |
3336 | return; | 3336 | return; |
3337 | } | 3337 | } |
3338 | else if (face == ALL_SIDES) | 3338 | else if (face == ALL_SIDES) |
@@ -3354,7 +3354,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3354 | tex.DefaultTexture.RGBA = texcolor; | 3354 | tex.DefaultTexture.RGBA = texcolor; |
3355 | } | 3355 | } |
3356 | UpdateTexture(tex); | 3356 | UpdateTexture(tex); |
3357 | TriggerScriptChangedEvent(Changed.COLOR); | 3357 | TriggerScriptChangedEvent(Changed.COLOR); |
3358 | return; | 3358 | return; |
3359 | } | 3359 | } |
3360 | } | 3360 | } |