aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation
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/Implementation
parentMerge branch 'master' of ssh://melanie@opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-91f6898b26caa8f74533dbd90478cf4103251abe.zip
opensim-SC-91f6898b26caa8f74533dbd90478cf4103251abe.tar.gz
opensim-SC-91f6898b26caa8f74533dbd90478cf4103251abe.tar.bz2
opensim-SC-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/Implementation')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs5
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs7
2 files changed, 6 insertions, 6 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index bc36fda..5f9b09b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -119,14 +119,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
119 AsyncCommands = new AsyncCommandManager(ScriptEngine); 119 AsyncCommands = new AsyncCommandManager(ScriptEngine);
120 } 120 }
121 121
122 // Object never expires
123 public override Object InitializeLifetimeService() 122 public override Object InitializeLifetimeService()
124 { 123 {
125 ILease lease = (ILease)base.InitializeLifetimeService(); 124 ILease lease = (ILease)base.InitializeLifetimeService();
126 125
127 if (lease.CurrentState == LeaseState.Initial) 126 if (lease.CurrentState == LeaseState.Initial)
128 { 127 {
129 lease.InitialLeaseTime = TimeSpan.Zero; 128 lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
129 lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
130 lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
130 } 131 }
131 return lease; 132 return lease;
132 } 133 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 7c878b8..b447cfb 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -159,16 +159,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
159 } 159 }
160 } 160 }
161 161
162 //
163 // Never expire this object
164 //
165 public override Object InitializeLifetimeService() 162 public override Object InitializeLifetimeService()
166 { 163 {
167 ILease lease = (ILease)base.InitializeLifetimeService(); 164 ILease lease = (ILease)base.InitializeLifetimeService();
168 165
169 if (lease.CurrentState == LeaseState.Initial) 166 if (lease.CurrentState == LeaseState.Initial)
170 { 167 {
171 lease.InitialLeaseTime = TimeSpan.Zero; 168 lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
169 lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
170 lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
172 } 171 }
173 return lease; 172 return lease;
174 } 173 }