Skip to content
This repository has been archived by the owner on Feb 28, 2024. It is now read-only.

[BUG-230763] Sit target remains occupied if a agent is disconnected by duplicate agent while sitting on a vehicle. #8363

Open
1 task
sl-service-account opened this issue May 17, 2021 · 10 comments

Comments

@sl-service-account
Copy link

sl-service-account commented May 17, 2021

What just happened?

This is not new and has been happening for years but I can't find any issue related to that problem and I think it's the cause of several issue reported about script errors in vehicles.

When a user leaves a vehicle without standing up (viewer crash or disconnected while sitting on the vehicle) and does not reconnect in the region where the disconnection happened, sit target in the prims he was sitting remains occupied, causing scripts error and /or permissions requests afterward.
If it happens to the vehicle driver, the vehicle becomes unuasable. If it happens to passenger(s) occupîed sit targets will prevent anyone from sitting on the vehicle again.

after it happens, llAvatarOnSitTarget still reports the key of the disconnected user and there is no way to clear it. llUnsit is uneffective and even dropping and re-setting the sit target has no effect.
Only way to fix that problem is re-rezzing the vehicle by raking it in inventory or using Edit+Shift+drag.

What were you doing when it happened?

happens in any kind of vehicle. Reproduced witha free and full perms boat "Sienna Class Motor Boat V1.5c" available on marketplace https://marketplace.secondlife.com/p/Sienna-Class-Day-Sailer/20840449

What were you expecting to happen instead?

Sit target should be freed when the avatar leaves.
Alternatively, since it is possible to identify the problem by script, providing a script function that can force clear the sit target could be a workaround.

Other information

Steps for reproducing :

Add the atatched script "checkSitTargets" in the boat, it will help monitoring sit targets occupancy.

Sit avatar1 and avatar2 on the boat

[17:10] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #5
[17:10] Sienna Class Motor Boat V1.5c whispers: Avatar1 sitting on link #1

click START motor on the hud and then page up to increase throttle
cross a region border
disconnect avatar2 using Developper -> Force an error -> Force disconnected viewer

avatar1 still sees avatar2 that is still appearing online

continue boating and enter another region, Avatar2 is eventually unseated from the boat but still visible by Avatar1, stuck at region border

reconnect avatar2, get him back to the boat and sit again on the boat

avatar2 will be sitted on the poseball inside because the other one is still occupied

[17:15] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #6
[17:15] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #5
[17:15] Sienna Class Motor Boat V1.5c whispers: Avatar1 sitting on link #1

stand up avatar2 => avatar2 receives request to animate upong standing, sit target on prim #5 has been freed but #6 is still occupied

[17:16] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #6
[17:16] Sienna Class Motor Boat V1.5c whispers: Avatar1 sitting on link #1

From this point, Avatar2 can sit on the boat but will get permission requests from link #6 because he is apperaring as llAvatarOnSitTarget() but not effectively seated on it

If the same thing happens again, sit targets on both posballs will be occupied and nobody can sit on the boat anymore (or if the boat had only 2 sit targets).

Avatar1 will get error messages each time the linkset will change

[17:24] crewman: Unable to find specified agent to request permissions.
[17:24] crewman: Unable to find specified agent to request permissions.

Attachments

Links

Related

Original Jira Fields
Field Value
Issue BUG-230763
Summary Sit target remains occupied if a agent is disconnected by duplicate agent while sitting on a vehicle.
Type Bug
Priority Unset
Status Accepted
Resolution Triaged
Reporter Uggo Vieria (uggo.vieria)
Created at 2021-05-17T00:53:17Z
Updated at 2021-10-30T01:00:42Z
{
  'Build Id': 'unset',
  'Business Unit': ['Platform'],
  'Date of First Response': '2021-05-17T06:36:38.212-0500',
  "Is there anything you'd like to add?": 'Steps for reproducing :\r\n\r\nAdd the atatched script "checkSitTargets" in the boat, it will help monitoring sit targets occupancy.\r\n\r\nSit avatar1 and avatar2 on the boat\r\n\r\n[17:10] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #5\r\n[17:10] Sienna Class Motor Boat V1.5c whispers: Avatar1 sitting on link #1\r\n\r\nclick START motor on the hud and then page up to increase throttle\r\ncross a region border\r\ndisconnect avatar2 using Developper -> Force an error -> Force disconnected viewer\r\n\r\navatar1 still sees avatar2 that is still appearing online\r\n\r\ncontinue boating and enter another region, Avatar2 is eventually unseated from the boat but still visible by Avatar1, stuck at region border\r\n\r\nreconnect avatar2, get him back to the boat and sit again on the boat\r\n\r\n\tavatar2 will be sitted on the poseball inside because the other one is still occupied\r\n\r\n[17:15] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #6\r\n[17:15] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #5\r\n[17:15] Sienna Class Motor Boat V1.5c whispers: Avatar1 sitting on link #1\r\n\r\n\r\nstand up avatar2 => avatar2 receives request to animate upong standing, sit target on prim #5 has been freed but #6 is still occupied\r\n\r\n[17:16] Sienna Class Motor Boat V1.5c whispers: Avatar2 sitting on link #6\r\n[17:16] Sienna Class Motor Boat V1.5c whispers: Avatar1 sitting on link #1\r\n\r\nFrom this point, Avatar2 can sit on the boat but will get permission requests from link #6 because he is apperaring as llAvatarOnSitTarget() but not effectively seated on it\r\n\r\nIf the same thing happens again, sit targets on both posballs will be occupied and nobody can sit on the boat anymore (or if the boat had only 2 sit targets).\r\n\r\nAvatar1 will get error messages each time the linkset will change \r\n\r\n[17:24] crewman: Unable to find specified agent to request permissions.\r\n[17:24] crewman: Unable to find specified agent to request permissions.\r\n',
  'ReOpened Count': 0.0,
  'Severity': 'Unset',
  'System': 'SL Simulator',
  'Target Viewer Version': 'viewer-development',
  'What just happened?': "This is not new and has been happening for years but I can't find any issue related to that problem and I think it's the cause of several issue reported about script errors in vehicles.\r\n\r\nWhen a user leaves a vehicle without standing up (viewer crash or disconnected while sitting on the vehicle) and does not reconnect in the region where the disconnection happened, sit target in the prims he was sitting remains occupied, causing scripts error and /or permissions requests afterward.\r\nIf it happens to the vehicle driver, the vehicle becomes unuasable. If it happens to passenger(s) occupîed sit targets will prevent anyone from sitting on the vehicle again.\r\n\r\nafter it happens, llAvatarOnSitTarget still reports the key of the disconnected user and there is no way to clear it. llUnsit is uneffective and even dropping and re-setting the sit target has no effect.\r\nOnly way to fix that problem is re-rezzing the vehicle by raking it in inventory or using Edit+Shift+drag.\r\n",
  'What were you doing when it happened?': 'happens in any kind of vehicle. Reproduced witha  free and full perms boat "Sienna Class Motor Boat V1.5c" available on marketplace https://marketplace.secondlife.com/p/Sienna-Class-Day-Sailer/20840449',
  'What were you expecting to happen instead?': 'Sit target should be freed when the avatar leaves.\r\nAlternatively, since it is possible to identify the problem by script, providing a script function that can force clear the sit target could be a workaround.',
  'Where': 'Reproduced in Blake Sea regions but happens anywhere.',
}
@sl-service-account
Copy link
Author

Lucia Nightfire commented at 2021-05-17T11:36:38Z

Having trouble reproing, but I have seen the condition before.

If you scrub a link's sit target via llLinkSitTarget() or PRIM_SIT_TARGET then reapply it, does it remove the occupied status?

@sl-service-account
Copy link
Author

Maestro Linden commented at 2021-05-17T13:55:46Z

I can't reproduce this with Second Life Server 2021-04-21.558586. CHANGED_LINK properly triggers when an avatar seated on a vehicle disconnects from the sim, and llAvatarOnSitTarget() consistently returns NULL_KEY (i.e. no avatar seated). After the original avatar disconnects, another avatar is able to sit on the sit target without issue and drive the vehicle.

Here's what I tried:

  1. Visit the same area with 2 avatars

    1. the vehicle driver, to sit on the vehicle and later disconnect
    2. the vehicle owner, who acts as an observer
  2. Rez 2 boxes and link them together

  3. Add CheckSitTargets.lsl from this jira to the root prim

  4. Add the following simple vehicle script in the root prim: ```Java
    // Basic vehicle script

    default
    {
    state_entry()
    {

        llSetSitText("Ride");
        llSitTarget(<0,0,1>, ZERO_ROTATION);
        llSetCameraEyeOffset(<-6.0, 0.0, 2.00>);
        llSetCameraAtOffset(<0.0, 0.0, 1.0>);
        
        llSetStatus(STATUS_BLOCK_GRAB_OBJECT, TRUE);
        llSetVehicleType(VEHICLE_TYPE_CAR);
        
        llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP | VEHICLE_FLAG_LIMIT_ROLL_ONLY | VEHICLE_FLAG_LIMIT_MOTOR_UP);
        
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.01);
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.15);
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 1000.0);
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.1);
        
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.1);
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.1);
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.1);
        
        llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <1000, 1000, 1000.0>);
        llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <100.0, 100.0, 100>);
        
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.0);
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1000);
        
        llSetVehicleFloatParam(VEHICLE_BUOYANCY, 0);
        llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.0);
        llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 3.0);
        
        llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 0);
        llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.01);
        llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 1.0);
        
        llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, ZERO_ROTATION);
        
        llCollisionSound("", 0.0);
    }
    
    on_rez(integer param)
    {
        llResetScript();
    }
    
    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            key agent = llAvatarOnSitTarget();
            
            llSay(0, "CHANGED_LINK triggered.   llAvatarOnSitTarget() returns: " + (string)agent);
            
            if (agent)
            {
                llSetStatus(STATUS_PHYSICS, TRUE);
                llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA);
            }
            else
            {
                llSetStatus(STATUS_PHYSICS, FALSE);
                
                if(llGetPermissions())
                {
                    llReleaseControls();
                    llStopAnimation("sit");
                }
            }
        } 
    }
    
    run_time_permissions(integer perm)
    {
        if (perm)
        {
            llStartAnimation("sit");
            llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP, TRUE, FALSE);
        }
    }
    
    control(key id, integer level, integer edge)
    {
        vector angular_motor;
        if(level & CONTROL_FWD)
        {   
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <25.0,0.0,0.0>);
        }
        if(level & CONTROL_BACK)
        {
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-15.0,0.0,0.0>);
        }
        if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
        {            
            angular_motor.z = -PI * 0.5;
        }
        if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
        {  
            angular_motor.z = PI * 0.5;
        }
        llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);
    }
    

    }

  5. Have the non-owner sit on the object

  6. Have the owner touch the object

    • Observe that CheckSitTargets.lsl prints the driver's key: > Link [BUG-10000] THE VIEWER DONT OPEN #1 (BUG-230763 test) is occupied by avatar with key 39b44919-512a-40a5-8347-90f9125937e4
    • The vehicle may be driven around at this point
  7. Have the driver disconnect

    • Either forcibly disconnect the viewer's internet connection, or force a viewer crash via this viewer menu option: Develop -> Force an Error -> Force bad memory access
  8. After a minute or so, the owner will see that the vehicle driver disappears, as the session times out. Note if the script produces a chat message about CHANGED_LINK at this point

    • In my testing, the script consistently prints > CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
  9. Have the owner touch the object any number of times to see if CheckSitTargets.lsl reports

    • In my testing, CheckSitTargets.lsl did not report any active sit targets - there was no chat output
  10. Have the owner sit on the vehicle, to see if the sit target is available

    • In my testing, the observer avatar sits on the sit target and is able to drive the vehicle
  11. Have the owner touch the vehicle while seated

    • Observe that CheckSitTargets.lsl prints the owner's key: > [06:54] BUG-230763 test whispers: Link [BUG-10000] THE VIEWER DONT OPEN #1 (BUG-230763 test) is occupied by avatar with key e1a51880-d7b5-4c00-800d-91664f5b84c0

@sl-service-account
Copy link
Author

Uggo Vieria commented at 2021-05-17T15:46:44Z

Hi Maestro, I could not reproduce with your 2 prims vehicle so I added a 3rd prim with a sit target and I can reproduce.

 

Screen recording here https://youtu.be/Fyg1nXc65m0

and Output of the scripts :

[08:22] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[08:22] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:22] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[08:22] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[08:22] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[08:26] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[08:26] Test vehicle whispers: Lario Fontaine sitting on link #1
[08:26] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[08:26] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:26] Test vehicle whispers: Lario Fontaine sitting on link #1
[08:26] Test vehicle: Entering Blake Sea - Beaufort
[08:26] Lario Fontaine entered the region (1.30 m).

Forcing disconnection of Lario here

[08:27] Test vehicle: Entering Blake Sea - Cannonade
[08:27] Lario Fontaine entered the region (0.77 m).
[08:27] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[08:27] Test vehicle: Camera control currently only supported for attachments and objects on which you are sitting.
[08:27] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:27] Test vehicle whispers: Lario Fontaine sitting on link #1
[08:27] Test vehicle: Entering Blake Sea - Hawser
[08:27] Lario Fontaine entered the region (0.77 m).
[08:28] Test vehicle: Entering Blake Sea - Jetsam
[08:28] Test vehicle: Entering Blake Sea - Flotsam
[08:28] Test vehicle: Entering Blake Sea - Turnbuckle
[08:29] Lario Fontaine is online.

Lario reconnecting but still visible on my screen sitting on the vehicle, still present in friends list too and never had any notification of him being offline

 

The sit target on root prim is still occuped, Lario is seated on link #3
[08:30] Test vehicle whispers: Lario Fontaine sitting on link #3
[08:30] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:30] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7

But still reported as sitting on link #1 as well from this point, standing up and resitting won't change anything, even if Lario appears to be sitting on root prim, he does not get controls and the vehicle is unuasable
[08:30] Test vehicle whispers: Lario Fontaine sitting on link #1
[08:31] Test vehicle whispers: Lario Fontaine sitting on link #3
[08:31] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:31] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[08:31] Test vehicle whispers: Lario Fontaine sitting on link #3
[08:31] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:31] Test vehicle whispers: Lario Fontaine sitting on link #1
[08:31] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[08:31] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[08:31] Test vehicle whispers: Lario Fontaine sitting on link #3
[08:31] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:31] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[08:31] Test vehicle whispers: Lario Fontaine sitting on link #3
[08:31] Test vehicle whispers: Uggo Vieria sitting on link #2
[08:31] Test vehicle whispers: Lario Fontaine sitting on link #1
[08:31] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[08:31] Test vehicle whispers: Lario Fontaine sitting on link #3
[08:31] Test vehicle whispers: Uggo Vieria sitting on link #2

[08:32] Lario Fontaine left chat range.
[08:32] Lario Fontaine is offline.
[08:32] Test vehicle whispers: Lario Fontaine sitting on link #3
[08:32] Test vehicle whispers: Link #3 (Object) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[08:32] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000

and gives script errors each time someone sit or stand
[08:32] Test vehicle: llStopAnimation: Script trying to stop animations but agent not found

 

 

If the one being disconnected was a paseenger and not the driver, the vehicle would still work but give persmission requests and script errors each time an avatar sits on it or stands up

Also, one sit target being still occupied worngly, you can quickly run out of sit target and second passenger can no resit after reloging

@sl-service-account
Copy link
Author

Uggo Vieria commented at 2021-05-17T15:56:46Z

I realize now that the vehicle was probably not moving at the end because I still had it in edit in the other screen BUT the problem of occupied sit target remains because that vehicle that should carry 3 avatars can now only carry 2

@sl-service-account
Copy link
Author

Maestro Linden commented at 2021-05-17T18:22:29Z

[~uggo.vieria] that video is pretty interesting. It seems like Lario's agent presence might be getting screwed up by disconnecting the viewer, and then repeatedly crossing regions by riding on a vehicle, going fast enough that no single region has the agent before the ~90 second timeout triggers. This looks like it could be a bug, but I think it might have very little to do with LSL itself.

Are you able to reproduce the bug without performing any region crossings? In the non-crossing case, I would expect the disconnected viewer's avatar to disappear after ~90 seconds, and for the scripts to detect the empty seat as soon as the avatar disappears.

@sl-service-account
Copy link
Author

Uggo Vieria commented at 2021-05-17T18:32:35Z

No, I don't thin it's happening if you don't change region.

If you go slower, the disconnected agent got stuck at the first crossing and appears offline but the sit target remains occupied.

The fact the user remains visible and apperas online it not really a problem, the real problem is that afetr having a few people diconnected or crashing while sailing, the boat becomes unusable because all sit targets are occupied.

I'll make a video at lower speed and changing region only once but I finrt need to mod your formula one script to have slower speed :)

@sl-service-account
Copy link
Author

Uggo Vieria commented at 2021-05-17T19:32:35Z, updated at 2021-05-17T19:41:22Z

I confirm that I can't reproduce if we stay in the region where the avatar has been disconnectedeverything is working as expected if all happens in the same region. Lario reconnected standing on the boat and sit target had been freed when he disconnected

I don't think it's LSL related either, it looks more like the server is not detecting the disconnection and never sends the CHANGED_LINK event. I guess it's a tricky thing due to things not happening in the same region, that's why I'm wondering if a script function able to force clear sit targets when it happens could be possible becuase that would be a way to save the vehicle when it happens in places where you can't rez a new one and also prevent many users from being unable to use their vehicle properly without understanding why. For example, adding a force clear of the sit target in llUnsit() would help.

But it is not a matter of speed.

I did another test at slow speed, disconnected Lario just before the crossing and then waited more than 2 minutes after the crossing with Lario still visible next to me and showing in friends list.

 

here is the screen recording https://youtu.be/PKEpyCAains

and scripts output :

[11:57] Test vehicle whispers: Uggo Vieria sitting on link #2
[11:57] Test vehicle whispers: Lario Fontaine sitting on link #1
[11:57] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7

Disconnecting Lario here, before crossing

[11:58] Test vehicle: Entering Blake Sea - Beaufort
[11:58] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[11:58] Test vehicle: Camera control currently only supported for attachments and objects on which you are sitting.
[11:58] Test vehicle whispers: Uggo Vieria sitting on link #2
[11:58] Test vehicle whispers: Lario Fontaine sitting on link #1

4 minutes after Lario's diconnection, he is still occupying sit targer on link #2

Reconnecting LArio, he is logged in at the place he logged in the previous time
[12:02] Lario Fontaine is online.
[12:02] Lario Fontaine left chat range.
[12:02] Lario Fontaine entered the region (53.52 m).
[12:02] Lario Fontaine entered chat range (15.22 m).
[12:02] Test vehicle whispers: Link #2 (Object) is occupied by avatar with key 86f0ee10-938e-4737-b989-ad4e6fa9948f
[12:02] Test vehicle whispers: Link #1 (Test vehicle) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:02] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[12:02] Test vehicle whispers: Lario Fontaine sitting on link #3
[12:02] Test vehicle whispers: Uggo Vieria sitting on link #2
[12:02] Test vehicle whispers: Lario Fontaine sitting on link #1

After sitting Lario on the boat again, he is occupying sit targets on lins 1 and 3, appears to be sitting on link 3 but can still control the boat

[12:02] Test vehicle whispers: Link #3 (Object) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:02] Test vehicle whispers: Link #2 (Object) is occupied by avatar with key 86f0ee10-938e-4737-b989-ad4e6fa9948f
[12:02] Test vehicle whispers: Link #1 (Test vehicle) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7

Forcing disconnection of Lario aagain before the next crossing

[12:04] Test vehicle: Entering Blake Sea - Cannonade
[12:04] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[12:04] Test vehicle: Camera control currently only supported for attachments and objects on which you are sitting.
[12:04] Test vehicle whispers: Lario Fontaine sitting on link #3
[12:04] Test vehicle whispers: Uggo Vieria sitting on link #2
[12:04] Test vehicle whispers: Lario Fontaine sitting on link #1
[12:04] Test vehicle whispers: Link #3 (Object) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:04] Test vehicle whispers: Link #2 (Object) is occupied by avatar with key 86f0ee10-938e-4737-b989-ad4e6fa9948f
[12:04] Test vehicle whispers: Link #1 (Test vehicle) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7

2 minutes later, Lario still visible on my screen and still occupying sit targerts 1 and 3

[12:07] Lario Fontaine is online.
[12:08] Lario Fontaine left chat range.
[12:08] Lario Fontaine entered the region (71.87 m).
[12:08] Lario Fontaine entered chat range (18.14 m).
[12:09] Test vehicle whispers: Link #3 (Object) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:09] Test vehicle whispers: Link #2 (Object) is occupied by avatar with key 86f0ee10-938e-4737-b989-ad4e6fa9948f
[12:09] Test vehicle whispers: Link #1 (Test vehicle) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:09] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7

Sitting Lario on the boat, he is put on the sit of the root prim because all sit targets are occipied. He can still control the boat

[12:09] Test vehicle whispers: Lario Fontaine sitting on link #3
[12:09] Test vehicle whispers: Uggo Vieria sitting on link #2
[12:09] Test vehicle whispers: Lario Fontaine sitting on link #1

Standing up Lario and resitting, he now appears to be sitting correctly on root prim and has control but sit atrget 3 remains occupied

[12:09] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: 00000000-0000-0000-0000-000000000000
[12:09] Test vehicle whispers: Lario Fontaine sitting on link #3
[12:09] Test vehicle whispers: Uggo Vieria sitting on link #2
[12:09] Test vehicle whispers: Link #3 (Object) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:09] Test vehicle whispers: Link #2 (Object) is occupied by avatar with key 86f0ee10-938e-4737-b989-ad4e6fa9948f
[12:09] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[12:09] Test vehicle whispers: Lario Fontaine sitting on link #3
[12:09] Test vehicle whispers: Uggo Vieria sitting on link #2
[12:09] Test vehicle whispers: Lario Fontaine sitting on link #1

 

Attempting to sit a 3rd avatar on the boat fails because all sit targets are occupied (on more complex boats, you get "No room to sit here" when this happens

[12:10] Elisa Vieria is online.
[12:10] Elisa Vieria entered chat range (2.56 m).
[12:10] Elisa Vieria entered the region (2.56 m).
[12:11] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[12:11] Test vehicle whispers: Lario Fontaine sitting on link #3
[12:11] Test vehicle whispers: Uggo Vieria sitting on link #2
[12:11] Test vehicle whispers: Lario Fontaine sitting on link #1
[12:11] Test vehicle whispers: Link #3 (Object) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:11] Test vehicle whispers: Link #2 (Object) is occupied by avatar with key 86f0ee10-938e-4737-b989-ad4e6fa9948f
[12:11] Test vehicle whispers: Link #1 (Test vehicle) is occupied by avatar with key a9015e41-5fed-495a-8c95-effad51b11a7
[12:11] Test vehicle: CHANGED_LINK triggered. llAvatarOnSitTarget() returns: a9015e41-5fed-495a-8c95-effad51b11a7
[12:11] Test vehicle whispers: Lario Fontaine sitting on link #3
[12:11] Test vehicle whispers: Uggo Vieria sitting on link #2
[12:11] Test vehicle whispers: Lario Fontaine sitting on link #1
[12:11] Elisa Vieria left chat range.

@sl-service-account
Copy link
Author

Maestro Linden commented at 2021-05-17T21:09:37Z

Thanks for the follow-up. Your new video showing the disconnected avatar online after just 1 region crossing was especially fascinating. I think there are 2 issues in play:

  1. If a viewer loses connection or crashes while the agent is sitting on a vehicle, and then the vehicle crashes, the agent does not disconnect in a timely manner
  2. Once a "zombie" agent caused by (1) encounters their doppelgänger and disconnects, the vehicle's sit state gets corrupted, with the sit target on the vehicle becoming unusable

@sl-service-account
Copy link
Author

Uggo Vieria commented at 2021-05-17T21:39:49Z

I think it could be the cause of script errors reported in https://jira.secondlife.com/browse/BUG-230640

If someone has been disconnected while sailing and then reconnects and sits again on the boat in a different region, sit targets got corrupted, avatars are not seen by scripts on the prim they are sitting on and permissions errors are reported each time a CHANGED_LINK event happens. If they don't come back but the sit target is still occupied, that causes errors as well when the script tries to animate them.

This is more to happen in vehicles that have multiple animation while driving, like animation for turning wheel on turns or adjusting sails. A simple vehicle with a still pose will have less problems since anims are only started or stopped when you sit or stand up

@sl-service-account
Copy link
Author

Lucia Nightfire commented at 2021-10-30T01:00:43Z

I had this happen with an llSitOnLink() based teleporter this morning.

The user whose key became "stuck" said that they were experiencing at least 30% packet loss during the time and even showed me a video of a recording they made of a speed test prior to using the teleporter.

They said they didn't crash nor changed regions while using the teleporter.

If this is another area that relies on the viewer telling the server to add/remove sitter key to an object instead of server alone handling it, I think it needs to be made more secure.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant