aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ThirdParty/SmartThreadPool/STPPerformanceCounter.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-03-15 00:06:52 +0000
committerJustin Clark-Casey (justincc)2012-03-15 00:06:52 +0000
commit12cebb12d5b095fc8d1a2936b9537ad0e0e7dbe7 (patch)
tree2d1b84505fadf96df72eddd5a76e0348fe0579ad /ThirdParty/SmartThreadPool/STPPerformanceCounter.cs
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-12cebb12d5b095fc8d1a2936b9537ad0e0e7dbe7.zip
opensim-SC-12cebb12d5b095fc8d1a2936b9537ad0e0e7dbe7.tar.gz
opensim-SC-12cebb12d5b095fc8d1a2936b9537ad0e0e7dbe7.tar.bz2
opensim-SC-12cebb12d5b095fc8d1a2936b9537ad0e0e7dbe7.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 'ThirdParty/SmartThreadPool/STPPerformanceCounter.cs')
0 files changed, 0 insertions, 0 deletions