aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-09-15 21:41:42 +0100
committerJustin Clark-Casey (justincc)2010-09-15 21:51:13 +0100
commit16f296f48932379a89c52f095eae199347f33407 (patch)
tree083f5e19ff4a5a349d7ddac5055bff1a1fd59cdd /OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
parentRemove long unused Region/Framework/ThreadTracker (diff)
downloadopensim-SC_OLD-16f296f48932379a89c52f095eae199347f33407.zip
opensim-SC_OLD-16f296f48932379a89c52f095eae199347f33407.tar.gz
opensim-SC_OLD-16f296f48932379a89c52f095eae199347f33407.tar.bz2
opensim-SC_OLD-16f296f48932379a89c52f095eae199347f33407.tar.xz
Instead of locking SOG.Children when a group is being removed from the scene, iterate over an unlocked list instead
Previously, deadlock was possible because deleting a group took a SOG.Children lock then an m_entityUpdates.SyncRoot lock in LLClientView At the same time, a thread starting from LLClientView.ProcessEntityUpdates() could take an m_entityUpdates.SyncRoot lock then later attempt to take a SOG.Children lock in PermissionsModule.GenerateClientFlags() and later on Taking a children list in SOG appears to be a better solution than changing PermissionsModule to not relook up the prim. Going the permission modules root would require that all downstream modules not take a SOG.Children lock either
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs')
0 files changed, 0 insertions, 0 deletions