MantisBT - opensim
View Issue Details
0008004opensim[REGION] Scripting Enginepublic2016-08-21 15:352019-02-05 12:27
mewtwo0641 
mewtwo0641 
normalmajoralways
closedfixed 
master (dev code) 
master (dev code) 
Master
Standalone (Multiple Regions)
ODE
.NET / Windows64
None
0008004: Scripts sometimes take a long time to load on region cross/teleport
On region crossing or teleports attachment scripts can take a measurably long time to load (On order of anywhere from 30 seconds to a minute) for the crossing avatar once the cross/teleport has completed.

This is a bit more than just a simple initial slow script load issue though; It gives a good possibility for someone to teleport or region cross again before the scripts have loaded for which I have observed problems in the way of lost script states (attachment scripts get reset), script load errors (Won't work at all until OS restart), and on occasion completely and permanently destroyed items (Observed as objects in inventory with no name and refuses to attach).

This appears to happen on a just started instance of OpenSim; the behavior observed is:

1. Start OpenSim

2. Log in and cross over or directly teleport to another region

3. Attachment scripts will not work for a short while and is also observed in the console as not loading (using debug xengine log 1 to see loaded scripts output to verify). After about 30 seconds to 1 minute scripts will finally start working and loaded scripts will be logged in console.

   3a. If attempting to teleport or region cross in this time frame before the attachment scripts have loaded then the aforementioned scripts state reset, scripts load errors, or destroyed attachments happen.

4. Once the scripts are loaded for that region the issue doesn't appear anymore moving between the two regions that have already "seen" those scripts. But if moving to another region that hasn't "seen" those scripts yet the issue appears again.

A simple indicator of this issue being triggered is to make a few new boxes and put a few new scripts in them that trigger an llOwnerSay() in state_entry(), i.e. the default new script, and then wear them for the test. When the issue is triggered the scripts will be reset and this will cause llOwnerSay() to fire.
These steps were done on a fresh install of OpenSim master with a clean new database.

1. Have at least 2 regions setup (I used 3; 2 connected to each other and 1 disconnected as an "island")

2. Start OpenSim, log in, wear attachments with scripts (I was wearing around 15 scripts in total for tests) and cross/teleport to another region.

3. Before the attachment scripts load, cross back to the previous region or go to another region that you haven't already previously been to for this OpenSim session.

    3a. It's easiest to have two adjacent regions and cross over, and then cross back right away before the scripts load up but as mentioned previously there is a good 30 second to minute window to do this so it's not very hard to trigger

4. Issue in description should have appeared by this step
I have noticed that the issue appears to be per-avatar. The issue also reappears if OpenSim is shutdown and then restarted; The regions that had previously loaded attachment scripts done in testing had "forgotten" about them and the scripts will take a long time to load again moving between regions until those regions have loaded them; repeating the cycle.
No tags attached.
Issue History
2016-08-21 15:35mewtwo0641New Issue
2016-08-21 15:43UbitUmarovNote Added: 0031043
2016-08-21 15:46UbitUmarovNote Added: 0031045
2016-08-21 15:48mewtwo0641Note Added: 0031047
2016-08-21 15:49mewtwo0641Note Added: 0031048
2016-08-21 15:51mewtwo0641Note Edited: 0031048bug_revision_view_page.php?bugnote_id=31048#r5707
2016-08-21 15:54UbitUmarovNote Added: 0031049
2016-08-21 15:57mewtwo0641Note Added: 0031050
2016-09-01 15:05mewtwo0641Note Added: 0031090
2016-09-01 15:06mewtwo0641Note Edited: 0031090bug_revision_view_page.php?bugnote_id=31090#r5714
2016-09-01 15:11UbitUmarovNote Added: 0031091
2016-09-01 15:17mewtwo0641Note Added: 0031092
2016-09-01 15:19mewtwo0641Note Edited: 0031092bug_revision_view_page.php?bugnote_id=31092#r5716
2019-01-19 04:34mewtwo0641Note Added: 0033845
2019-01-19 04:34mewtwo0641Statusnew => resolved
2019-01-19 04:34mewtwo0641Fixed in Version => master (dev code)
2019-01-19 04:34mewtwo0641Resolutionopen => fixed
2019-01-19 04:34mewtwo0641Assigned To => mewtwo0641
2019-02-05 12:27BillBlightNote Added: 0034314
2019-02-05 12:27BillBlightStatusresolved => closed

Notes
(0031043)
UbitUmarov   
2016-08-21 15:43   
Yes this is a known issue
for example, Due to security reasons scripts need a full recompile, etc.
(0031045)
UbitUmarov   
2016-08-21 15:46   
if you run a closed grid, with regions running on machines controlled by you, you can try the option
TrustBinaries = true

Never if regions run on unknown machines!
(0031047)
mewtwo0641   
2016-08-21 15:48   
Ahhh, I see. Is it projected or planned to be fixed before 0.9.0 release? Thank you!
(0031048)
mewtwo0641   
2016-08-21 15:49   
(edited on: 2016-08-21 15:51)
Whoops, posted a bit too fast, Yes I have tried TrustBinaries = true, but true or false doesn't seem to make a difference for me

I have also tried multiple combinations of ScriptStopStrategy, AppDomainLoading, and AllowScriptCrossing

(0031049)
UbitUmarov   
2016-08-21 15:54   
no, no plans on that for now :(
(0031050)
mewtwo0641   
2016-08-21 15:57   
Alright, if there is anything I can do to help though please let me know.
(0031090)
mewtwo0641   
2016-09-01 15:05   
(edited on: 2016-09-01 15:06)
I believe I may have stumbled across the culprit... Or at least a contributor to it. I had a 'login enable' command left in my startup_commands.txt file that I had forgotten about; I had put that command in that file a while back because of some issues in the past where regions that didn't have scripted objects in them would not have their logins enabled on OpenSim load up (Making sure to never log in until region scripts have completely loaded of course). However, I had never seen this particular issue described in this mantis come up as a result of that command until the most recent version of OS (up to and including master).

For some reason when I removed that command from startup_commands.txt all is well and attachment scripts restart just fine when crossing/teleporting to another region. It's really strange.

(0031091)
UbitUmarov   
2016-09-01 15:11   
possible the region was still compiling the loaded scripts when you crossed?
(0031092)
mewtwo0641   
2016-09-01 15:17   
(edited on: 2016-09-01 15:19)
I am unsure of that to be honest. I would venture to say no since there's no log output of the scripts at all for about 30 seconds; as if OpenSim was waiting for something before beginning to either load the already compiled binaries or compile for the first time (I'm using 'debug xengine log 1' to monitor the console to see when scripts are being loaded) It almost acts as if the region just simply doesn't realize there's scripts to be loaded for a short while and then it finally loads. As I remove the login enable command from startup_commands.txt all is well on region crosses consistently and it doesn't wait. To test this theory I put that command back in and the issue reappears, took the command back out, and the issue goes away again.

If it may help my script related settings are as follows:

AllowScriptCrossing = true
TrustBinaries = true
ThreadStackSize = 642144
AppDomainLoading = false
ScriptStopStrategy = co-op

(0033845)
mewtwo0641   
2019-01-19 04:34   
Haven't seen this issue for a while; Seems fixed by master.
(0034314)
BillBlight   
2019-02-05 12:27   
Old Issues, closed, can be reopened if they still exist