aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs
diff options
context:
space:
mode:
authorMelanie2009-08-06 22:03:20 +0100
committerMelanie2009-08-06 22:03:20 +0100
commit91f6898b26caa8f74533dbd90478cf4103251abe (patch)
tree0ee8d1b94c3f0667d32cbf56043fd021fc8d8b73 /OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs
parentMerge branch 'master' of ssh://melanie@opensimulator.org/var/git/opensim (diff)
downloadopensim-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/ScriptEngine/Shared/Api/Runtime/Executor.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs22
1 files changed, 1 insertions, 21 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs
index 2501752..7f67599 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs
@@ -35,7 +35,7 @@ using log4net;
35 35
36namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase 36namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
37{ 37{
38 public class Executor : MarshalByRefObject 38 public class Executor
39 { 39 {
40 // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 40 // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
41 41
@@ -89,26 +89,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
89 initEventFlags(); 89 initEventFlags();
90 } 90 }
91 91
92 /// <summary>
93 /// Make sure our object does not timeout when in AppDomain. (Called by ILease base class)
94 /// </summary>
95 /// <returns></returns>
96 public override Object InitializeLifetimeService()
97 {
98 //m_log.Debug("Executor: InitializeLifetimeService()");
99 // return null;
100 ILease lease = (ILease)base.InitializeLifetimeService();
101
102 if (lease.CurrentState == LeaseState.Initial)
103 {
104 lease.InitialLeaseTime = TimeSpan.Zero; // TimeSpan.FromMinutes(1);
105 // lease.SponsorshipTimeout = TimeSpan.FromMinutes(2);
106 // lease.RenewOnCallTime = TimeSpan.FromSeconds(2);
107 }
108 return lease;
109 }
110
111
112 public scriptEvents GetStateEventFlags(string state) 92 public scriptEvents GetStateEventFlags(string state)
113 { 93 {
114 //m_log.Debug("Get event flags for " + state); 94 //m_log.Debug("Get event flags for " + state);