SL projects update week 24/1: server, viewer

Server Deployments Week 24

As always, please refer to the server deployment thread for the latest information / news on deployments.

Due to the need to make a necessary security update to the simulators in week 23, this weeks deployments effectively return the server channels to the condition they were in (albeit briefly) following the week 23 deployments:

  • There was no deployment to the Main (SLS) channel on Tuesday June 10th. However, the channel was still restarted as a part of scheduled maintenance on the grid
  • On Wednesday June 11th, the release candidates should be updated as follows:
    • BlueSteel should return to the inventory update.  This project enables support for a new version of the inventory service, AISv3, which requires the updates found in the Sunshine RC Viewer
    • LeTigre should return to the group ban project this week.  As the name implies, this project adds the ability to ban users from groups -see the release notes for details
    • Magnum should return to the Experience Tools project this week, and receive some minor changes – release notes

 SL Viewer

There has been no release candidate viewer promoted to the de facto release viewer as yet this week.

The MemPlug release candidate and the Sunshine / AIS v3 candidate with both withdrawn from the viewer release channel. As noted in week 23, both of these release candidate viewers have been combined into a single viewer, the MemShine RC, version 3.7.9.290582, which has now officially replaced both of them.

The Zipper (fast installation) viewer has yet to return to the release channel, having been removed on May 30th.

Please refer to my Current Viewer Releases page for information on current viewer releases (SL and TPV).

Upcoming Snowstorm RC and XP Version Checking

The upcoming Stormstorm RC viewer will include Windows XP version / updates checking as a part of the installer
The upcoming Stormstorm RC viewer will include Windows XP version / updates checking as a part of the installer

The upcoming Snowstorm RC viewer which should be entering the release channel shortly will, as reported in my last TPV developer meeting update, include the STORM-1831 updates to LSL syntax highlighting.

It will also include STORM-1966, which, in keeping with recent updates to the minimum hardware specifications for Second Life, require that Windows XP systems have the latest patches installed. For 32-bit XP, this means having Service Pack 3 installed, and for 64-bit XP, having Service Pack 2 installed. Any XP system not meeting these requirements will be unable to install the viewer until such time as they are updated. In addition, the installer will warn Vista and Windows 7 users if they are lacking a Service Pack update (but it will not prevent the viewer from being installed on these systems).

Other Items

Light Reflections on Materials

There has been a report that use of materials on adjoining prims can lead to issues with light reflections over what should contiguous surfaces, even when all of the parameters and setting across all of the maps used on the surfaces are identical (see this sample image – the reflected light should be uniform across the two prims). It’s currently not clear how often this occurs or under what lighting angles. Anyone who has encountered the problem and can reproduce it, is asked to raise a JIRA.

Profile Feeds Photo Upload Issue?

There may be a problem (possibly intermittent) with uploading snapshots to the profile feeds, with snapshots getting stuck during processing (e.g. your feed displays a message similar to: You have X snapshots being processed”). This is apparently indicative of a back-end processing problem located somewhere between the snapshot being uploaded for display and actually being displayed on a feed. The problem has been reported by several people and has been noticed by the Lab, so hopefully it will be getting something of a poke to try to sort it out.

With thanks to Mona Eberhardt for note from the Content Creator’s meeting, Monday June 9th

SL projects update 23/3: server news and issues

Server Beta meetings: a place for Lindens and residents to strut their stuff ...
Server Beta meetings: a place for Lindens and residents to strut their stuff …

Server Deployments: Week 23

“We had a rather ‘exciting’ week in server updates,” Maestro Linden announced, kicking-off the Server Beta meeting on Thursday June 5th. “Or rather, exciting day, yesterday.”

Things started well enough, following the planned deployment schedule, namely:

  • There was no main channel deployment on Tuesday June 3rd
  • On Wednesday June 4th:
    • BlueSteel remained on the AIS v3 inventory update project
    • Magnum initially received updates to the Experience Tools project
    • LeTigre initially received simulator updates for the Group Bans project.

Note the use of “initially” above.

GnuTLS Issue and Update

Following the deployments to the RC channels on Wednesday June 4th, it was discovered that the version of a library used by the simulators had a potential security issue. This issue lay in GnuTLS, a secure communications library implementing the SSL, TLS and DTLS protocols and the technologies around them. Maestro explained the situation thus:

The concern was that a 3rd party site could trigger the issue, which could be triggered by a LSL script doing llHTTPRequest() to an HTTPS URL. To keep things slightly more sane, we took the current version of the server code on the main channel, and rebuilt it with the newer version of GnuTLS.

After testing the new build on Aditi, it was deployed to all channels on the main grid, starting at 17:00 SLT on Wednesday June 4th and running through until 01:30 SLT on Thursday June 5th. As this build was functionally identical to the Main channel build, but with the GnuTLS update, the Experience Tools and Group Ban updates deployed to Magnum and LeTigre were overwritten.

As Aditi also had vulnerable server versions, log-ins to the beta grid were suspended for part of the time, as updates were deployed there as well.

While the issue has been resolved, it will have an impact on server updates, inasmuch as it is now anticipated that the scheduled deployments this week will be re-deployed in week 24 (week commencing Monday June 9th).

This problem was not connected to the unscheduled maintenance which also took place on Thursday June 5th.

LSL Functions for Materials

Maestro also reported that it is believed that the LSL support for materials is now functionally complete. There is still currently no throttle in place against the risk of the capabilities being abused, and thought is still being given as to what any such throttle might be. “I just barely got to finding out what bad stuff happens without one,” Maestro said in answer to a question on this very point. Simon Linden than added:

I think that if we do a throttle, it will only be to handle quite extreme cases. We haven’t figured out the best way to throttle it … because we haven’t really seen a problem yet, but I think most of them fail silently now. So we’re likely to do something similar.

One thing the Lab will do with regards to any throttle imposed, is to set it so that it cannot be avoided by adding more scripts to the offending objects which then generate changes to the maps being displayed without individually breaking any imposed limits.

 Other Items

Aditi Log-in Issue / Inventory Update Issue

As reported in week 15, The script which should synchronise people’s passwords and inventories between Agni (the main grid) and Aditi (the beta grid) has not been functioning correctly (see BUG-5563), with the result the password updates and inventory syncing between the Agni and Aditi grids has not been occurring properly.

During the Server Beta meeting on Thursday May 29th, Maestro indicated that it had been thought  Coyot Linden had identified and fixed the root cause of the problem, so that any password update would synch during the overnight run of the script (around 02:00 SLT). However, following that meeting it was found that inventory syncing was still not occurring following a password change.

A further investigation by Coyot revealed a further problem (unrelated to the first) preventing inventories between the two grids being synched, although passwords were. This additional issue has also now been fixed.

Related Links

SL projects update 23/2: object detachment and inventory issues

I opted to put the following under a separate projects update piece, rather than “Other Items” (as I usually do), as they are quite extensive and worth noting. All of these items were discussed at the Simulator User Group meeting on Tuesday June 3rd.

Scripted Object Detachment Issue

This problem has been around for a while (see JIRA SVC-7626 for a description, although there have been more recently JIRA filed), and Simon Linden has been digging into it.

It relates to the scripted detachment of objects using a REGION_CHANGED event following a region crossing. When entering the new region, the order of the messages received by the viewer gets mixed-up such that it may get the order to “kill” (stop rendering) the object ahead of the message telling it to detach the object.

Should this happen, the viewer actually doesn’t know which object it should remove, and the result is that the object remains in visible to the wearer, but it cannot be detached or edited (because the server considers it removed). However, to other people in the region, the object will not appear to be attached, as they received the correct updates. So, if you have multiple attachments doing this, everyone may see different things.

One way to correct the problem is to re-log. This can cause the object to render properly and be detached.  Simon Linden also offered a possible solution:

If you click on it, it will likely go away. What happens then is the viewer sends up a “select” or some similar message with that local ID. The server can’t find the local ID, so it echos back a “kill” to the viewer … under the assumption that the viewer is confused and has this odd local ID.  That’s why similar problems of ghost objects [seen in-world rather than attached to an avatar] can often be fixed by clicking on them …

I’m not sure why but the click / selection thing seems to work more if you go back to the original region [where the object was still attached].

Why the order of the messages received by the viewer gets mixed-up is unclear, and there may be a number of possible causes, as Simon also explained:

Having controls [e.g. PERMISSION_TAKE_CONTROLS] may affect how scripts get run, and thus the REGION_CHANGED event gets processed faster [leading to the mix-up in the order of the messages]. I have to drop my bandwidth down to the lowest setting to make it happen … that’s another factor.

It’s an interesting bug because it combines region crossings with scripts, object deletions and the interest list updates … all pretty complicated parts of the server.

It’s not clear what is going to be done to rectify the issue, given it is a timing issue touching on several areas of interaction. In the meantime, if you encounter the issue, you may want to raise an additional JIRA, citing location, behaviour, etc., and also try one of the workarounds mentioned above.

Problems with Inventory’s Received Items Panel

received-itemsReceived Items is a system folder introduced with Direct Delivery and intended to be used for the initial receipt of SL Marketplace purchases before moving them into “normal” inventory. Because it is intended to be a “temporary” store, Received Items isn’t included in any inventory searches, so any items stored in folders created there won’t ever be listed when using search.

Within the official SL viewer, Received Items appears as a separate section at the bottom of the Inventory Folder (shown on the right). When displayed like this, it is not possible to move Received Items. However, when receiving goods from the Marketplace, Received Items does appear as a folder in the Recent tab of Inventory – and it is here that problems can occur, for example:

  • It is possible to drag the Received Items folder shown in the Recent tab into another folder, causing Received Items to vanish from the bottom of the Inventory floater following a re-log
  • It is possible to right-click on the Received Items folder in the Recent tab and delete it.

Neither of these issues are unrecoverable, however, and neither leads to a permanent loss of inventory.

Recovering After Accidentally Deleting the Received Items Folder

  • If you accidentally delete the Received Items folder in the Recent tab, you can recover it the same way as anything else – open Trash and drag it back under the My Inventory folder
  • If you purge your Trash after accidentally deleting the Received Items folder from the Recent tab, simply go to the Marketplace and make a purchase – Received Items will be re-created on receipt, although anything stored within it prior to the deletion will be lost.
When
SL viewer: following the receipt of a purchase, it is possible to accidentally move the Received Items folder in the Recent tab to another folder (l). Should this happen, then following a relog, it would appear as if the Recent Items section at the bottom of the Inventory floater has vanished (c). Also, when displaying Received Items as a folder under the Recent tab, it is possible to right-click it and accidentally delete it (r).

Continue reading “SL projects update 23/2: object detachment and inventory issues”

SL projects updates 23/1: server, viewer, group bans

Simulator UG meeting (stock)
Simulator UG meeting (stock)

Server Deployments Week 23

As always, please refer to the server deployment thread in the Technology forum for the latest updates, news or changes to the deployment schedule and for any issues which may have been reported.

Main (SLS) Channel

There was no main channel deployment on Tuesday June 3rd. Instead, the maintenance work which had been scheduled for May 22nd, but which had to be postponed due to problems earlier in the week, took place. Some of us who report on server updates, etc., had mistakenly believed that this maintenance work was actually carried out May 28th; so ho-hum on that score!

Release Candidate Channels

The release channel updates for week 23 will be:

  • BlueSteel will remain on the inventory update project, and will not be rolled this week.  This project enables support for a new version of the inventory service, AISv3.  To make use of this new feature, login with the Sunshine RC Viewer
  • Magnum will remain on the Experience Tools project, but will gain some minor changes related to the project – release notes
  • LeTigre will move to the “group ban” project.  As the name implies, this project adds the ability to ban users from groups (more below)  – release notes

The release candidate channel rolls (Magnum and LeTigre) should take place on Wednesday June 4th.

SL Viewer

On Tuesday June 3rd, the Lab released the MemShine release candidate viewer, version 3.7.9.290582. This viewer combines updates from the MemPlugs RC viewer (a variety of fixes to address memory leaks in the viewer and to improve crash rates), and the Sunshine / AIS v3 RC viewer (additional server-side appearance improvements and AIS v3 improvements aimed at outfit changes). Both of these RCs also remain listed on the Alternate Viewers wiki page at the tim of writing.

For the status of all SL viewer releases, please refer to my Current viewer Releases page.

Group Bans

As noted above, the server-side code for group bans is due to start its deployment to the main grid. This functionality, which comprises both server-side and viewer updates, provides the means for owners (and selected roles) in an open enrollment group to selectively ban people from either joining / re-joining their group, in order to help with issues such as group spamming.

The following general points apply to the group bans functionality:

  • By default, only the Owners role is assigned the ability to ban other avatars from a group
  • The ability can be granted to other roles, if required
  • Roles which are granted this ability are also granted the Eject Members and the Remove Members from Roles abilities
  • Group members with the Manage Ban List ability will be able to add or remove other users to and from the group ban list
  • When a group member is banned from the group, they are automatically ejected
  • A user who is banned from a group will not be able to join it either directly or through an invitation (once the capability is fully deployed)
  • The ban list for a group can store a maximum of 500 entries
  • Group Owners cannot be banned
  • When a user is banned from a group, their viewer version does not matter; they will be ejected and banned whether or not they are also using a viewer with the group ban ability
  • Additional notes on the capability can be found here.

The code is initially being deployed to the LeTigre RC, and the remaining RCs and the main channel will follow in due course.

There is currently no formal release of a project viewer able to use the group ban functions available via the Alternate Viewers wiki page. According to Baker Linden, speaking at the Simulator User Group meeting on Tuesday June 3rd, the project viewer will most likely be formally released once the server code is fully deployed across the grid.

Group bans provides the ability to ban (and remove, where appropriate) people from a group. The Group Bans prject viewer contains the necessary updates to manage the ban process.
Group bans provides the ability to ban (and remove, where appropriate) people from a group. The Group Bans project viewer contains the necessary updates to ban individuals or lists of people from a group (whether or not they are already members of the group) and to view the names / dates of all those banned

However, those wishing to test the capability can obtain the current version of the project viewer (Windows / Mac / Linux). If you opt to do so, please keep in mind that until the server-side functionality has been fully deployed across the main grid, group bans will only be enforced by simulators which support the feature.

This means that user who was banned from a group may still be able to join or re-join the group by moving to a region running on a channel which does not currently support the group bans. This may  result in them appearing on both the Members List and the Banned Residents list, so once the project has gone grid-wide it might be necessary to either eject or re-ban them once more.

I’ll be providing a complete overview of the group ban function once it has been fully deployed to the grid and the project viewer is officially available via the Alternate Viewers wiki page.

SL projects updates 22/2: LSL functions for materials avialable for Aditi testing

Maestro Linden used the Server Beta meeting to announce that Simon Linden’s work on adding some LSL support for materials is now available for testing on Aditi.

Regions roller-test102 and roller-test103, both on channel DRTSIM-253, have the server-side scripting support (note the SLurls are for ADITI).

Please note that this is very much a work-in-progress, and the Lab’s own testing is still underway.

The following details can also be found on the Server Beta Meeting wiki page.

LSL fucntions for handling materials
Parameters have been added to the llSetPrimitiveParams() and llGetPrimitiveParams() functions to enable scripted control of materials maps

Materials can be added to object faces with llSetPrimitiveParams() functions using the following parameters:

  • [PRIM_SPECULAR, integer face, string texture, vector repeats, vector offsets, float rotation_in_radians, vector color, integer glossy, integer environment]
  • [PRIM_NORMAL, integer face, string texture, vector repeats, vector offsets, float rotation_in_radians]
  • [PRIM_ALPHA_MODE, integer face, integer alpha_mode, integer alpha_cutoff]
    • Valid alpha_mode options are PRIM_ALPHA_MODE_NONE, PRIM_ALPHA_MODE_BLEND, PRIM_ALPHA_MODE_MASK, PRIM_ALPHA_MODE_EMISSIVE

Materials can be read with the various llGetPrimitiveParams() functions using the following parameters:

  • [PRIM_SPECULAR, integer face] returns [string texture, vector repeats, vector offsets, float rotation_in_radians, vector color, integer glossy, integer environment]
  • [PRIM_NORMAL, integer face] returns [string texture, vector repeats, vector offsets, float rotation_in_radians]
  • [PRIM_ALPHA_MODE, integer face] returns [integer alpha_mode, integer alpha_cutoff]

Additional Notes

  • Behaviour for both getting and setting materials parameters should basically correspond to behaviour with PRIM_TEXTURE
  • The color vectors use 0.0-1.0 as the range, as with llSetColor()
  • The integer parameters for PRIM_SPECULAR correspond to the same values that you see in the build tool
  • Components of a material can be ‘reset’ as follows:
    • PRIM_NORMAL and PRIM_SPECULAR settings are set to default values by setting the texture to NULL_KEY
    • PRIM_ALPHA_MODE settings are set to default values by setting the alpha_mode to PRIM_ALPHA_MODE_BLEND – mask_cutoff is actually reset to 0 unless the alpha mode is PRIM_ALPHA_MODE_MASK
    • When PRIM_NORMAL, PRIM_SPECULAR, and PRIM_ALPHA_MODE settings are all set to default values, the material is deleted from that prim face, and LI may be updated accordingly
  • This new scripted capability will only work on the nominated test regions
  • ALM must obviously be enabled.

Known Issues

  • The version currently on Aditi lacks proper throttling, so there could be performance issues if scripts behave badly. A throttle will be added in due course
  • There is a viewer rendering issue, where the face will not be rendered and you’ll see log spam (BUG-6187). This can happen:
    • If the viewer has ALM enabled
    • And a prim face has a material on it
    • And PRIM_ALPHA_MODE is PRIM_ALPHA_MODE_BLEND (this is the default after a material is added)
    • And the diffuse texture does not have an alpha channel (e.g. plywood)

With reference to BUG-6187, Maestro added, “One thing to keep in mind …  is that if your diffuse texture lacks an alpha channel, you’ll also want to set the alpha mode to PRIM_ALPHA_MODE_NONE to avoid the bug, even if you really just want to add a normal map.”

The bug itself doesn’t mean the alpha mode should be set every time a materials map is changed, only when adding a material to a face which previously didn’t have a material. Maestro went on to give some further information on the issue:

What happens when you add a material via the build tool, is that the viewer inspects whether the current diffuse texture has an alpha channel and automatically sets the alpha mode to ALPHA_MODE_NONE if the diffuse texture is opaque, but keeps it at _BLEND if there’s an alpha channel. Unfortunately, the simulator can’t do this, because it doesn’t necessarily have the texture asset and doesn’t have the right libs to process texture assets in that manner. The build tool has some trickery where it always greys out the UI for alpha mode when the texture doesn’t have an alpha channel. Anyway, it’s kind of a hassle, but once PRIM_ALPHA_MODE is set to something ‘friendly’, you should be able to update normal or specular settings without touching it again.

As this is a viewer rendering bug, there is no timescale as to when a fix may appear.

The Lab is particularly interested in seeing how use of these new parameters may affect performance (such as through rapid and repeated changes to maps), and what kinds of rates cause these issues, so that they can more accurately assess the required level of throttling.

Depending upon how further testing goes, what additional changes the Lab needs to make, and what has already been scheduled at the time, these updates might be available on an RC on Agni in a few weeks.

SL projects updates week 22/1: LSL functions for materials, group bans

It’s a light start to project news from the lab this week.

Server Deployments Week 22

There are currently no planned deployments for the week.

Materials LSL Functions

There’s still no firm date for when this are liable to surface for testing, but speaking at the Simulator User Group on Tuesday May 27th, Simon Linden indicated the time is getting “closer”. In the meantime he re-iterated the get and set functions currently being worked upon, which remains as per my week 21 report, namely:

Get functions:

  • [PRIM_SPECULAR, integer face] returns [string texture, vector repeats, vector offsets, float rotation_in_radians, vector color, integer glossy, integer environment]
  • [PRIM_NORMAL, integer face] returns [string texture, vector repeats, vector offsets, float rotation_in_radians]
  • [PRIM_ALPHA_MODE, integer face] returns [integer alpha_mode, integer alpha_cutoff]

Set functions:

  • [PRIM_SPECULAR, integer face, string texture, vector repeats, vector offsets, float rotation_in_radians, vector color, integer glossy, integer environment]
  • [PRIM_NORMAL, integer face, string texture, vector repeats, vector offsets, float rotation_in_radians]
  • [PRIM_ALPHA_MODE, integer face, integer alpha_mode, integer alpha_cutoff]”

The same access rules will apply to materials as for diffuse (texture) maps.

Most people may already be aware that llSetTextureAnim() will apply an animation equally across all three maps applied to an object / object face. However, the Lab is not currently looking to add additional parameters to llSetTextureAnim() so that each type of map independently of the others. Offering an explanation as to why this is the case, Simon said:

I’m guessing that would be pretty ugly to implement … or would need some careful design and thought as it couldn’t create new material entries under the hood.  I think that will have to be a follow-on feature … I can imagine it might create some cool effects but it would have to be carefully done not to blow up the materials accounting.

Group Bans

Simon indicated that the remaining back-end server updates for the group ban service may have been deployed on Tuesday May 27th. If so, it is possible that an initial server-side RC deployment of the group ban code might occur in week 23, together with the appearance of the group ban viewer. however this is pure speculation, and depends on how long the Lab want to let the back-end updates run prior to making a visible code deployment. More is likely to be known following the Server Beta meeting later in the week.