From Second Life Wiki
Jump to navigation Jump to search

Mono 2 Information From (please edit and add more information !)

Lots of misinformation and off topic discussion happening, so I will give another update.

The problem: The version of the mono runtime we currently use (1.2.6) has a bug in it that we tickle. Specifically if you attempt to add an assembly to the domain when it is already loaded (another version of the script is already loaded) it would stall the process for up to 20ms. The gory details is that it would add the assembly and THEN realize it was a duplicate and remove it - and removing it is painfully slow.

This is only one thing that may cause simulator stalls, of course, but it is a big deal and the focus of this jira.

A little history: We attempted once to work around this by checking ourselves whether or not the assembly was already loaded before adding it. In the case that it was already loaded we would just link to that assembly rather than add one. This worked, except ... the scripting system is fragile and in its current form insufficiently unit tested. When we tested internally and on public beta we saw a few script crashes - less than 1 per week total. Once released however it was obvious it was a huge problem and had to be reverted.

Where we are at now: We have 2 branches nearly ready. The first branch internally called "Mono 2 Aware" pulls in some features for version tolerance of scripts. This version can load and run scripts from existing sims (and older) as well as a future "Mono 2" version. The "Mono 2" simulator version uses Mono 2.6.7 and has other performance improvements, general improvements to the robustness of the system and a whole slew of new unit tests and integration tests. This branch can load and run all scripts from old simulator versions including "Mono 2 Aware".

The reason we need two stages is because existing simulator versions can not run scripts that were last saved on a "Mono 2" region. The script will crash and save bad state, which means even taking it to an older version will not restore it.

These two branches are in the final stages of internal testing, and in fact the "Mono 2 Aware" version has been on the beta Aditi grid for several months. Once we are sure of these branches we will release "Mono 2 Aware" through the normal RC process. After that code has propagated to all other branches we will send the "Mono 2" branch through the RC process as well.

Other Issues: There are lots of other issues. Some have been addressed with other projects such as compression and threaded rez, others are still in the works and I'm sure some have yet to be properly identified and prioritized. And of course there is always room for more ideas from the simple to the zany. However this specific jira issue is really large, has a really large following and already has a very specific focus on an identified issue and project to resolve it. I'm afraid just by volume that ideas added at this stage will be lost in the flood.

Lets keep this issue on topic and for tracking the issue we have identified. Please feel free to create new issues for other problems or other ideas.

Above all - thank you every one for your interest and participation in the discussion, for the help in identifying this bug oh so long ago and for your patience while we work on addressing it. Sorry it has taken so incredibly long.


As of today, 2011-03-01, 'mono 2 aware' has merged to the main release server branch and been deployed to the main release server channel. We plan on getting the 'mono 2' branch onto aditi in the next week or so and onto an RC shortly after that - Kelly Linden 11:09, 1 March 2011 (PST)