diff options
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 8 |
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 | { |