• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: SVC-2973
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Showstopper Showstopper
Assignee: Babbage Linden
Reporter: darling brody
Votes: 2
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

MONO - timer() event triggers before on_rez(), & state_entry()

Created: 31/Aug/08 07:28 PM   Updated: 15/Sep/08 10:05 AM
Return to search
Component/s: Scripts
Affects Version/s: 1.24 Server
Fix Version/s: None

Issue Links:
Relates

Linden Lab Issue ID: DEV-19950
Linden Lab Internal Branch: 1.24 server


 Description  « Hide
I have marked this issue a showstopper because it is effecting the order events are triggered including the crytical events like on_rez and state_entry. This is going to be breakign a lot of stuff and it is goign to drive people nutty trying to work out why. I was just lucky enough to be working on a stargate script effected by this at the time so I had all the debugging information in my script which quickly demonstrated the events were being triggered in the wrong order.

I have noticed some of my products have recently broken.

I have tracked the casue to the timer event triggering before other events such as state_entry and on_rez.

In the case of state_entry() it appears that the timer event in the new state is triggered before the state_entry on a state change if the timer is due to trigger at the time the state is changed.

The timer() event is triggered before the on_rez event() if the timer was due to be triggered when the item was take into inventory.

These problems have caused a lot of trouble with temp-rez items that are programmed to die. I have noticed this problem with my stargate event horizon and some (but not all) temp bullets.

I'm not sure why, and it dosnt seem to make any sence to me, but i cant force this to happen deliberatly with a new script. However removing the timer before switching states & before taking an object into inventory ensures that the state_entry & on_rez events are triggered correctly. I have the original script which was in world when mono was rolled out which still has the problem and can hand it to a linden when required. Note this script is LSL.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
darling brody added a comment - 31/Aug/08 07:35 PM
This has been linked to SVC-1894 so that people can see that it is a different problem. SVC-1894 is describing normal behaviour for a timer event, this jira is for abnormal behaviour.

Strife Onizuka added a comment - 01/Sep/08 12:13 AM
Hmm that's not good. The LSO VM is designed to ensure that state_entry's always jump to the top of the event queue.

Prospero Linden added a comment - 02/Sep/08 07:07 AM
Is this only with scripts compiled under Mono, or does it also affect scripts compiled under the LSL2 engine in 1.24.3? If I'm reading what you wrote correctly, it happens even on scripts that were compiled before 1.24 was on the grid – correct?

Periapse Linden added a comment - 02/Sep/08 10:06 AM
Next rolling restart will pick this up

darling brody added a comment - 02/Sep/08 02:00 PM
I have found two examples of this error. One in LSL that was compiled months ago, and another on LSL that I was working on at the time of the mono rollout. I can not confirm that this error occures under mono, but the old LSL is suffering from it.

darling brody added a comment - 03/Sep/08 03:07 AM
Good work. I see this is being rolled out to the grid already.

Now how about a new function called llOrbitAgent ?

no?

ok then, how about llOrbitSelf() for when life gets you down?

Darling


Periapse Linden added a comment - 09/Sep/08 04:05 PM
The fix was deployed in 1.24.4, and doesn't seem to have worked.

I'm still leaving this "Fix pending" since we have a new fix for 1.24.5 (this is currently deployed to many regions on aditi, so you can go and verify yourself)


Moon Metty added a comment - 09/Sep/08 04:48 PM
Indeed, the timer still misbehaves on 96115.

=======

We use this to test:

default
{
on_rez(integer dummy)

{ llSetTimerEvent(0); llOwnerSay ("Rezzed"); }

touch_start(integer total_number)

{ llSetTimerEvent(0.001); }

timer()

{ llOwnerSay("If you see me when the object rezzes, I am not supposed to be here."); }

}

-rez
-touch
-take (quickly to avoid spam)
-rez

Raising the time makes the chance of failure higher.
The timer is triggered after the on_rez-event.
An object in inventory is either reproducing or not reproducing.
Attaching the object makes the bug happen once, after that the object in inventory is cured.

=======

Second Life 1.21.0 (94829) Aug 20 2008 23:45:42 (Second Life Public Nightly)
You are at 255729.5, 255320.6, 20.9 in Sandbox Goguen 1.24 BETA located at sim3008.aditi.lindenlab.com (8.2.33.220:13002)
Second Life Beta Server 1.24.5.96115


Moon Metty added a comment - 11/Sep/08 02:34 PM
Second Life 1.21.0 (94829) Aug 20 2008 23:45:42 (Second Life Public Nightly)
You are at 255740.2, 255325.0, 20.9 in Sandbox Goguen 1.24 BETA located at sim3008.aditi.lindenlab.com (8.2.33.220:13002)
Second Life Beta Server 1.24.5.96378

This server-version has solved the problem


Periapse Linden added a comment - 15/Sep/08 10:05 AM
passed QA