aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs8
1 files changed, 7 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 6634028..f1c4c6c 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -164,6 +164,8 @@ namespace OpenSim.Region.Environment.Scenes
164 private Thread HeartbeatThread; 164 private Thread HeartbeatThread;
165 private volatile bool shuttingdown = false; 165 private volatile bool shuttingdown = false;
166 166
167 private object m_deleting_scene_object = new object();
168
167 #endregion 169 #endregion
168 170
169 #region Properties 171 #region Properties
@@ -1824,7 +1826,11 @@ namespace OpenSim.Region.Environment.Scenes
1824 { 1826 {
1825 //SceneObjectPart rootPart = group.GetChildPart(group.UUID); 1827 //SceneObjectPart rootPart = group.GetChildPart(group.UUID);
1826 1828
1827 group.RemoveScriptInstances(); 1829 // Serialise calls to RemoveScriptInstances to avoid
1830 // deadlocking on m_parts inside SceneObjectGroup
1831 lock (m_deleting_scene_object) {
1832 group.RemoveScriptInstances();
1833 }
1828 1834
1829 foreach (SceneObjectPart part in group.Children.Values) 1835 foreach (SceneObjectPart part in group.Children.Values)
1830 { 1836 {