diff options
author | Justin Clark-Casey (justincc) | 2012-03-15 00:20:47 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-03-15 00:20:47 +0000 |
commit | 2f81e53f63012f0ed1623dc6159da01a3807fbf6 (patch) | |
tree | 3ffa114441d92456392f452464f808983fbe1ee3 /OpenSim/Region/Framework/Scenes/UuidGatherer.cs | |
parent | Alleviate an issue where calling Thread.Abort() on script WorkItems can fail ... (diff) | |
download | opensim-SC_OLD-2f81e53f63012f0ed1623dc6159da01a3807fbf6.zip opensim-SC_OLD-2f81e53f63012f0ed1623dc6159da01a3807fbf6.tar.gz opensim-SC_OLD-2f81e53f63012f0ed1623dc6159da01a3807fbf6.tar.bz2 opensim-SC_OLD-2f81e53f63012f0ed1623dc6159da01a3807fbf6.tar.xz |
Fix a problem where multiple near simultaneous calls to llDie() from multiple scripts in the same linkset can cause unnecessary thread aborts.
The first llDie() could lock Scene.m_deleting_scene_object.
The second llDie() would then wait at this lock.
The first llDie() would go on to remove the second script but always abort it since the second script's WorkItem would not go away.
Easiest solution here is to remove the m_deleting_scene_object since it's no longer justified - we no longer lock m_parts but take a copy instead.
This also requires an adjustment in XEngine.OnRemoveScript not to use instance.ObjectID instead when firing the OnObjectRemoved event.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/UuidGatherer.cs')
0 files changed, 0 insertions, 0 deletions