Wednesday, 18 November 2015

IMPORTANT NOTICE: Paramour Dancemaster Dance Ball system

Hello everyone

In the last couple of days the Avimerge branch has been dropped into git master branch and has also been pushed out to OSGrid in their latest build. This is largely untested code and it's expected that there will be issues with it.

One of these is that the new code causes the initialization of my very popular dancemaster dance ball to fail due to an event timeout because of changes made to the way the code handles scripts. Under pre-merge code my system typically takes 5-10 seconds to initalize (in my own region it takes 6 seconds). Under the new code in my region it takes an insanely long 75 seconds to initialize.

By default, Opensim will time out any script event (like state_entry) that takes more than 30 seconds to execute, thus this new incredibly long script initialization time will cause state_entry to fail and the danceball will never switch from it's initializing state to its ready state. Thus all of my dance balls will probably fail for anyone using the new code.

Similar failures could easily happen for other scripted items you own (MLP objects being a prime candidate since they take quite a while to start).

There is a temporary fix for this but you will need access to the opensim.ini file for the simulator.

The Temporary Fix

  • Open the file ...\bin\opensim.ini
  • Scroll down to the [XEngine] section
  • Look for the part that says:
        ;# {EventLimit} {} {Amount of time a script can spend in an event handler} {} 30
        ;; Time a script can spend in an event handler before it is interrupted
        ; EventLimit = 30
  • In that final line, remove the semi-colon and change the EventLimit value to a much higher number (120) so now it will look like this:
        ;# {EventLimit} {} {Amount of time a script can spend in an event handler} {} 30
        ;; Time a script can spend in an event handler before it is interrupted
        EventLimit = 120
  • Save the file
  • Restart the simulator
This will now allow an event to take up to 2 minutes to finish processing and will therefore allow enough time under the current code for your dancemaster system to work.

There are no adverse effects to setting a longer time-out value other than it would allow a buggy script with an infinite loop to sit there churning through its loop for a full 2 minutes before killing it instead of doing so after 30 seconds.

If/when the Opensim devs have resolved this issue I will post a notice that it's safe to revert to a lower number again.

I apologize for the inconvenience and can only say that it's out of my control to do anything other than make the developers aware that the problem exists and hope they deem it important enough to address in the not-too-distant future.

Update - Nov 18 @ 6pm

Ubit and I spent most of the afternoon trying to track down the cause of the issue. While we don't yet know for certain, we were able to bring the reset times down to normal again (<5sec) by changing ApDomainLoading from true to false in [XEngine]. Previous strong recommendations from the devs were for Windows users (which I am) to have this set to true vs Linux users should have it false.  Until the issue is resolved from the code end, it would seem Windows users will now need to set it false as well.