Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0002929 [opensim] [REGION] Scripting Engine minor always 2008-12-28 07:40 2009-10-02 22:06
Reporter Akira View Status public  
Assigned To
Priority normal Resolution reopened  
Status confirmed   Product Version
Summary 0002929: llRemoveInventory(llGetScriptName()); Does not remove script
Description I've used the testscript attached to issue 2754 and the effect is now the script stops to run, but the script itself remains in the prim. On SecondLife the script runs without a problem.
Additional Information Grid: OSGrid
Region: Ko Suai

Tags No tags attached.
Git Revision
SVN Revision 7863
Run Mode Grid (1 Region per Sim)
Physics Engine BasicPhysics
Environment Mono / Linux32
Mono Version 1.9.1
Attached Files

- Relationships
has duplicate 0003156closedHomerHorwitz llRemoveInventory(llGetScriptName()) doesnt work 

-  Notes
(0008521)
melanie (administrator)
2008-12-28 08:01

I can confirm that the script is indeed not deleted from inventory
(0009068)
WordfromtheWise (reporter)
2009-01-30 13:38

also for me .. it wont delete

i tried the same script on following other version
- 0.6.1.8062
- 0.6.1.7994

additionally on my own region (hostet on xp at home) i use
- 0.6.2.8182 and still it do not work ..

this is my Testscript


default
{
    state_entry()
    {
 llRemoveInventory(llGetScriptName());

    }
    timer()
// just in case
    {

    }
    touch_start(integer total_number)
    {

// try to delete the script from content folder
  llRemoveInventory(llGetScriptName());

// try to delete the script by name _Ontouch //this is the actual script name
  llRemoveInventory("_Ontouch");

// test to see if it throws an error trying to del a object that really do not exist in the prim
  llRemoveInventory("notexist");
 
       }
}

it wont work with those three methods ; any ideas appreciated
(0009848)
WordfromtheWise (reporter)
2009-03-05 15:29
edited on: 2009-03-05 15:31

tried it today again .. but it does not work .. !!

Server Info:
0.6.3.8708 (interface 3) on Windows XP and with
0.6.3.8640 (interface 3) on Suse 11.1
bith with the XEngine

Anybody can confirm it working .. or does anybody has a workaround ?

best regards
Word

(0010084)
WordfromtheWise (reporter)
2009-03-22 13:17
edited on: 2009-03-22 13:24

i found out that the functions itself works

llRemoveInventory("script_name");
alone, called onclick or with a listener works and deletes
the script called "script_name" .. in the inventory ..

but the problem is that it wont delete the script if
llRemoveInventory("script_name"); is used ON ITSELF , the actual script.

The function can delete other scripts in the inventory but not itself.

Sounds like a security feature gone wrong, but like this, the function
is somehow useless because many times the script should delete itself ..

what can be done ? Any ideas ?



info:
regarding the testcripts further up in the thread i used llRemoveInventory(llGetScriptName()); first, and as this is not working
(as it can not delete itself) it stopped further steps in the script ..

(0010596)
LynMimistrobell (reporter)
2009-04-10 08:02

I've found the same behaviour, using XEngine. And I suspect it has to do with XEngine's OnRemoveScript method which removes the script from the XEngine collection of scripts it's maintaining. After that, the script stops executing and I suspect that's why the llRemoveInventory call is not completed.

Additional info: Once a script has tried to remove itsself, if you open the script the checkboxes Running and Mono are greyed out. This to me is a confirmation that the script was removed from the XEngine's collection.
(0010677)
svn (developer)
2009-04-12 05:03

melanie committed related code in r9112

Actually remove the script if it tries to remove itself.
Fixes Mantis 0002929

see more at - http://opensimulator.org/cgi-bin/viewvc.cgi?view=rev&revision=9112 [^]
(0011766)
ShackDougall (reporter)
2009-05-28 11:11

In 0.6.5-post-fixes, llRemoveInventory(llGetScriptName()) removes the script from the prim's inventory, but it apparently does not remove the script from the list of active scripts.

Thus, if you have something like a rezzer that is rezzing lots of prims (where each prim has a script that does something and then removes itself), the number of active scripts grows without bound.

In the case of my rezzer, this doesn't have a noticable effect until the number of ghost scripts reaches 1000, at which point the rezzer fails.

Rebooting the sim will remove the ghost scripts and the rezzer will function properly again. However, this limits the total prims that can be rezzed by the rezzer to 1000.
(0011768)
WordfromtheWise (reporter)
2009-05-28 14:08

could you provide a piece of code, so we can try if that is not
'just your' problem ?

thank you in advance
Word
(0011769)
ShackDougall (reporter)
2009-05-28 15:09

Sure. To see what I'm talking about, login to OpenSim using the SL viewer. Press Control-Shift-1 to open the statistics window. Take note of the number of active scripts.

Now rez a prim. Create a script in it. Look at the number of active scripts. It should have increased by 1. (I'm assuming that you are the only one active in the sim.)

Now, paste the script below and save it. Then, touch the prim and the script will delete itself. Look in the prim and the script is gone. However, the number of active scripts has not decreased.

If you try this over and over. The number of active scripts will continue to increase.

default
{
    state_entry()
    {
        llSay(0, "Touch me and I will die.");
    }
    
    touch_start( integer foo )
    {
        llRemoveInventory(llGetScriptName());
    }
}
(0013719)
ShackDougall (reporter)
2009-10-02 22:06

I'm still seeing this in 0.6.6-post-fixes. I will test in 0.6.7 next week, but since this doesn't seem to be getting any attention, I'm raising the status.

- Issue History
Date Modified Username Field Change
2008-12-28 07:40 Akira New Issue
2008-12-28 07:40 Akira SVN Revision => 7863
2008-12-28 07:40 Akira Run Mode => Grid (1 Region per Sim)
2008-12-28 07:40 Akira Physics Engine => BasicPhysics
2008-12-28 07:40 Akira Environment => Mono / Linux32
2008-12-28 07:40 Akira Mono Version => 1.9.1
2008-12-28 08:01 melanie Note Added: 0008521
2009-01-30 13:29 WordfromtheWise Issue Monitored: WordfromtheWise
2009-01-30 13:38 WordfromtheWise Note Added: 0009068
2009-02-14 04:06 HomerHorwitz Relationship added has duplicate 0003156
2009-03-05 15:29 WordfromtheWise Note Added: 0009848
2009-03-05 15:31 WordfromtheWise Note Edited: 0009848
2009-03-22 13:17 WordfromtheWise Note Added: 0010084
2009-03-22 13:22 WordfromtheWise Note Edited: 0010084
2009-03-22 13:23 WordfromtheWise Note Edited: 0010084
2009-03-22 13:24 WordfromtheWise Note Edited: 0010084
2009-04-10 08:02 LynMimistrobell Note Added: 0010596
2009-04-12 05:03 svn Checkin
2009-04-12 05:03 svn Note Added: 0010677
2009-04-12 05:03 svn Status new => resolved
2009-04-12 05:03 svn Resolution open => fixed
2009-05-28 11:03 ShackDougall Issue Monitored: ShackDougall
2009-05-28 11:11 ShackDougall Status resolved => feedback
2009-05-28 11:11 ShackDougall Resolution fixed => reopened
2009-05-28 11:11 ShackDougall Note Added: 0011766
2009-05-28 14:08 WordfromtheWise Note Added: 0011768
2009-05-28 15:09 ShackDougall Note Added: 0011769
2009-10-02 22:06 ShackDougall Note Added: 0013719
2009-10-02 22:06 ShackDougall Status feedback => confirmed


Mantis 1.1.1[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker