diff options
author | Justin Clark-Casey (justincc) | 2012-03-15 00:06:52 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-03-19 21:29:24 +0000 |
commit | 9ecbcb787c426aa0093355609651ead7eb14b4f1 (patch) | |
tree | 112e410d7576becae22cbc1bc38b85a8ffe9d27b /OpenSim/Services/AuthenticationService | |
parent | refactor: rename ScriptInstance.m_CurrentResult to m_CurrentWorkItem to make ... (diff) | |
download | opensim-SC_OLD-9ecbcb787c426aa0093355609651ead7eb14b4f1.zip opensim-SC_OLD-9ecbcb787c426aa0093355609651ead7eb14b4f1.tar.gz opensim-SC_OLD-9ecbcb787c426aa0093355609651ead7eb14b4f1.tar.bz2 opensim-SC_OLD-9ecbcb787c426aa0093355609651ead7eb14b4f1.tar.xz |
Alleviate an issue where calling Thread.Abort() on script WorkItems can fail to release locks, resulting in a crippled simulator.
This seems to be a particular problem with ReaderWriterLockSlim, though other locks can be affected as well.
It has been seen to happen when llDie() is called in a linkset running more than one script.
Alleviation here means supplying a ScriptInstance.Stop() timeout of 1000ms rather than 0ms, to give events a chance to complete.
Also, we check the IsRunning status at the top of the ScriptInstance.EventProcessor() so that another event doesn't start in the mean time.
Ultimately, a better solution may have to be found since a long-running event would still exceed the timeout and be aborted.
Diffstat (limited to 'OpenSim/Services/AuthenticationService')
0 files changed, 0 insertions, 0 deletions