This looks like a great change but could we make sure that the Author field is filled in on git am patches? Otherwise it's going to be a bit hard to tell who to talk to about which changes...
Best, Justin opensim-commits-boun...@lists.berlios.de wrote: > The branch, master has been updated > via 71c9291 Inconsistent locking of SenseRepeaters in Script Engine. > from b0923e0 Fix a glitch in a ROBUST message > > Those revisions listed above that are new to this repository have > not appeared on any other notification email; so we list those > revisions in full, below. > > - Log ----------------------------------------------------------------- > > commit 71c929137f48a0a7d97dbc866cbe2b12319aa40b > Author: unknown <administra...@.(none)> > Date: Fri Oct 23 03:52:49 2009 -0700 > > Inconsistent locking of SenseRepeaters in Script Engine. > > When I attempt to 'save oar' on a region with thousands of scripts with > timers, I get a NullReferenceException every time. The problem comes from > inconsistent locking in SensorRepeat.cs of the SenseRepeaters List. It is > iterated and modified in many places and these places are all wrapped in a > lock except in the GetSerializationData(). This is the function throwing the > exception because an item in the list becomes null during iteration. > > The attached patch locks SenseRepeatListLock in GetSerializationData() > > 71c929137f48a0a7d97dbc866cbe2b12319aa40b > diff --git > a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs > > b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs > index ee01c3c..b75a2e4 100644 > --- > a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs > +++ > b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs > @@ -516,16 +516,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins > { > List<Object> data = new List<Object>(); > > - foreach (SenseRepeatClass ts in SenseRepeaters) > + lock (SenseRepeatListLock) > { > - if (ts.itemID == itemID) > + foreach (SenseRepeatClass ts in SenseRepeaters) > { > - data.Add(ts.interval); > - data.Add(ts.name); > - data.Add(ts.keyID); > - data.Add(ts.type); > - data.Add(ts.range); > - data.Add(ts.arc); > + if (ts.itemID == itemID) > + { > + data.Add(ts.interval); > + data.Add(ts.name); > + data.Add(ts.keyID); > + data.Add(ts.type); > + data.Add(ts.range); > + data.Add(ts.arc); > + } > } > } > return data.ToArray(); > > ----------------------------------------------------------------------- > > Summary of changes: > .../Api/Implementation/Plugins/SensorRepeat.cs | 19 +++++++++++-------- > 1 files changed, 11 insertions(+), 8 deletions(-) > _______________________________________________ > Opensim-commits mailing list > opensim-comm...@lists.berlios.de > https://lists.berlios.de/mailman/listinfo/opensim-commits > -- justincc Justin Clark-Casey http://justincc.org _______________________________________________ Opensim-dev mailing list Opensim-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/opensim-dev