diff options
author | Melanie | 2009-08-06 22:03:20 +0100 |
---|---|---|
committer | Melanie | 2009-08-06 22:03:20 +0100 |
commit | 91f6898b26caa8f74533dbd90478cf4103251abe (patch) | |
tree | 0ee8d1b94c3f0667d32cbf56043fd021fc8d8b73 /OpenSim/Region/Framework/Scenes/EventManager.cs | |
parent | Merge branch 'master' of ssh://melanie@opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC_OLD-91f6898b26caa8f74533dbd90478cf4103251abe.zip opensim-SC_OLD-91f6898b26caa8f74533dbd90478cf4103251abe.tar.gz opensim-SC_OLD-91f6898b26caa8f74533dbd90478cf4103251abe.tar.bz2 opensim-SC_OLD-91f6898b26caa8f74533dbd90478cf4103251abe.tar.xz |
|From: James J Greensky <jame.j.greensky@intel.com>
|Date: Wed, 5 Aug 2009 09:51:52 -0700
|Subject: [PATCH] Closed two major memory leaks for scripted objects
|
|Two major memory leaks for the scripted objects were fixed
|- One leak had to do with remoting acrossing app domains. When a script and
| its controlling agent communicate across an application boundary, it calls
| functions on a stub proxy object that then invokes the remote method on
| the object in the other app domain. These stub objects (two for each script)
| were setup to have infinate lifetimes and were never being garbage collected.
|- The second leak was the result of adding a scene object part instance method
| to a scene event and never removing it. This cause the event's delegate list
| to maintain a link to that object which is then never freed as the scene event
| object is never destroyed.
Patch applied, please direct feedback to me. Possible issue: Longtime idle
scripts like vendors may fail.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/EventManager.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/EventManager.cs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 086496e..1d4d6d7 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -953,11 +953,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
953 | // this lets us keep track of nasty script events like timer, etc. | 953 | // this lets us keep track of nasty script events like timer, etc. |
954 | public void TriggerTimerEvent(uint objLocalID, double Interval) | 954 | public void TriggerTimerEvent(uint objLocalID, double Interval) |
955 | { | 955 | { |
956 | handlerScriptTimerEvent = OnScriptTimerEvent; | 956 | throw new NotImplementedException("TriggerTimerEvent was thought to be not used anymore and the registration for the event from scene object part has been commented out due to a memory leak"); |
957 | if (handlerScriptTimerEvent != null) | 957 | //handlerScriptTimerEvent = OnScriptTimerEvent; |
958 | { | 958 | //if (handlerScriptTimerEvent != null) |
959 | handlerScriptTimerEvent(objLocalID, Interval); | 959 | //{ |
960 | } | 960 | // handlerScriptTimerEvent(objLocalID, Interval); |
961 | //} | ||
961 | } | 962 | } |
962 | 963 | ||
963 | /// <summary> | 964 | /// <summary> |