[FIXED] HTML-on-a-prim becomes crash-sim-on-a-line-of-a-code

Watching HTML on a Prim at Simetria (100limite)

The good news is that we now have HTML-on-a-prim, with LL’s recent introduction of the Release Candidate for 1.19.1. It’s a long-awaited release — four years of waiting for Havok 4, and three years of waiting for HTML-on-a-prim — but last Friday LL rolled out a server upgrade that even allows the Early Adopters to have both things on the same sim! (the picture is from one of those Havok&HTML sims).

This is a “first release”… but it’s already amazing. Sure, the scrollbars don’t work yet — the Web page replaces a texture, like Quicktime streaming, and that texture is placed on a normal prim. You can’t click on links either. Still, Javascript and animated GIFs work well (or reasonably well), and although Flash is as yet unsupported, standard HTML as rendered by the Gecko/Mozilla engine (used by Firefox, Flock, Camino, and a plethora of other web browsers) works quite well.

I’m not going to list all the reasons why this is important, since I’ve done so thoroughly almost three years ago… feel free to check it out on my very early blog entries. The reasons remain the same after all this time spent waiting. They’re still valid ones. Only that nowadays SL is way more intensively used, and while on 2005 we would talk about “future classes held by colleges and training sessions by corporations might use this”, we have now thousands of professors in SL (the newly launched Second Life Education Blog has close to 5,000 registered users, all teachers) and dozens of thousands of students taking their classes in SL. So what was “speculation” in 2005 becomes “reality” in 2008, and HTML-on-a-prim will be heavilly used — probably way more than

The reason for this post is that, however, something nasty crept in. Ordinal Malaprop, shortly after the 1.19.1 RC0 release, was complaining quite loudly on Twitter about the “utter lack of documentation”. A few of us Twitteratis thought she was overreacting — after all, the client-side of the new feature was pretty well documented, with Torley releasing three videos to explain how to set it up.

But Ordinal was referring to the LSL scripting side. Well, she was right — nothing was either on the LSL Wiki or the Second Life Wiki. I’ve gone in-world to start figuring out the settings for HTML-on-a-prim and documenting it (Jacek Antonelli did the same for the SL Wiki, which has a far weirder and more complex syntax). Satisfied, I started this morning to work on a “SL browser” 🙂 Actually, I’m reusing old code — I did a working prototype for HTML-on-a-prim using Quicktime streaming of server-generated images a few months ago 🙂 — so my first step was to start playing with the settings.

By mere chance, I thought I would tackle something that I hadn’t done before. My own code did not take into account that a page can be generated with “zillions of pixels” (specially true for blogs). LL happily added “size” as a feature, and you’ll be able to scroll things down like on a “normal” browser. So the first thing was to set the size on the Media settings.

Alas, that did not work. I just got errors about wrong parameters. It looked obvious: the Media settings have two entries (width and height) so I thought it would accept two integers, one for each. It didn’t. Frustrated, I tried using strings or floats instead. Or even lists. Or vectors. New errors always popped up. By chance, I just tried it with ONE integer.

*Boom*. Forced logout. “The simulator you were on is rebooting”. Well, I didn’t think a lot about that — LL is flaky sometimes; it’s weekend, with lots of people around; and I was on one of the Early Adopter Havok4 sims, so I’m used to extra instability. I logged back in, recompiled the script, tested it… and *boom* again.

Now that was strange. A coincidence? The script was set to “not running” when I logged in again. Every time I tried it, recompiled it, and tried again — it crashed the sim. Again and again and again.

So I moved over to another parcel, this time in Neufreistadt, which does not have the Havok4 code. *Boom* — and there goes lovely Neufreistadt up in smoke. But was it really going down, or was just the viewer crashing with a strange message? To make double-sure, I logged in with my useful “twin alt”, teleported her to the same parcel, and let her watch as I tested the script again with the (now) expected result.

She surely was logged out as well with the same message as I did. And when logging back in, I was sent to “Home” instead of my last location. Teleporting back failed with “cold not contact destination” — but after a minute or so, the sim went up again. So, yes, this was really crashing the sim. Not good!

Since I was back home — which is in Io, on an old part of the mainland — I wondered if this worked on group-owned land too (I rent my land from my old friend Eloise Pasteur). And it most certainly worked — that sim also crashed (my apologies to all residents that inadvertently were booted out of Io!).

So, well, this was a serious bug, and it’s filed on Jira. This is one “showstoppable” bug, since any griefer on a group can crash all sims that have group-owned parcels. It takes just one line of code and a few seconds. Let’s hope that enough people pick this up and manages to contact their favourite Lindens and hopefully push it towards the right person to patch the server code — and thanks to the fabulous new technology of the Het Grid, a quick fix can be easily rolled out even during a weekend, with minimal impact — definitely much less impact that watching the sims popping out of existence, one by one, as griefers laugh while we despair.

Lesson learned by Linden Lab: any major release needs thorough documentation, and, more important than that, at least a week or two of testing on the Beta Grid.

[UPDATE: Qarl Linden is already assigned to fix this time; from his superb work in the past, it’s pretty likely this will get fixed in no time 🙂 ]

[UPDATE 20080309: Qarl Linden has already flagged this bug as “fix pending”, which usually means that most of the work to fix it is done, it only needs to enter the queue for the next server code release. Nice work, Qarl!]

[UPDATE — FIXED: As reported by Qarl Linden himself, this bug is now fixed! Thank you very much, Qarl!]