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

[BUG-233107] Objects failing to render is happening more frequently of late #10255

Open
2 tasks
sl-service-account opened this issue Dec 20, 2022 · 18 comments
Open
2 tasks

Comments

@sl-service-account
Copy link

sl-service-account commented Dec 20, 2022

Steps To Reproduce

  • Just teleport about the grid and fairly frequently you will notice objects not rendering at all where you know there should be objects.

  • When you notice objects failing to render, sometimes doing one of the following will force the object to render, but fairly often nothing works and you need to relog to fix it.

    • Right clicking where the missing object should be,
    • Zooming camera out and back
    • Toggling wireframe - see BUG-232625
    • Rule out if it's a case of BUG-9439 - technically not a bug.
  • Starting roughly around the time Firestorm Viewer released with the performance improvements code, there have been an increased number of complaints about objects randomly failing to render.

  • Complaints started escalating roughly at the start of September 2022.

  • I have seen this problem pretty frequently myself on both Firestorm & the Linden Lab Viewer.

  • Also affects Black Dragon & CoolVL Viewer - from reports on the forum & at user groups.

  • There isn't actually a JIRA filed about this yet, so here it is.

  • I'm unsure if this problem is viewer or serverside or a bit of both.

  • See the linked forum posts for discussion about this problem.

  • As discussed at a recent Simulator user group, Rider Linden said he has also seen this problem recently and he suspects it may be a problem with the interest list.

    I’m fairly certain that the current vanishing object issue is in the Interest List. I’m not sure what we changed that could have aggravated though. I’ve been seeing it pretty regularly for about a month now.
    Source: 2022 SUG meetings week #48 summary

  • Relevant parts of the conversation from the week [BUG-10044] 3334538 Unlisted product not resolved #48 SUG

    [2022/11/29 12:05] Joe Magarac (animats): And there's the "disappearing object" problem: https://community.secondlife.com/forums/topic/493562-anyone-seeing-objects-missing
    [2022/11/29 12:06] Joe Magarac (animats): Really bad Thanksgiving Day.
    [2022/11/29 12:08] Henri Beauchamp: @joe: for missing objects, ALT-zooming out far,far away, beyond draw distance, staying a few seconds zoomed out, then getting back to normal FOV, normally triggers a new interest list request and makes objects reappear.
    [2022/11/29 12:08] Joe Magarac (animats): Others have said that.
    [2022/11/29 12:09] (whirly.fizzle): That works sometimes but not always
    [2022/11/29 12:09] Rider Linden: I've been seeing that issue as well.
    [2022/11/29 12:09] (whirly.fizzle): Toggling wireframe works sometimes but not always
    [2022/11/29 12:09] (whirly.fizzle): Sometimes nothing works.
    [2022/11/29 12:09] (whirly.fizzle): Except relog
    [2022/11/29 12:10] Joe Magarac (animats): The consensus on the missing object problem is that it got much worse with the "performance viewer". The missing objects are not editable.
    [2022/11/29 12:10] (whirly.fizzle): Has anyone been faffing with interest list stuff serverside?
    [2022/11/29 12:10] Qie Niangao: so it's a viewer problem? or the performance viewer uncovers an underlying problem with interest lists somehow?
    [2022/11/29 12:10] Rex Cronon: shouldn't crossing a sim border create a new interest list?
    [2022/11/29 12:10] Lucy daughter of the Devil (lucia.nightfire): I miss being able to right click select stuff to cause it to show, on the performance code you can't do that anymore
    [2022/11/29 12:11] Henri Beauchamp: @whirly: the Wireframe trick is doing thye same thing as the "refresh objects visibilty" found in some TPVs (mine got it), but it only works if your viewer did get the objects in the interest list, since it works around a race condition between viewer and server, and not missing list data
    [2022/11/29 12:12] (whirly.fizzle): Ahh thanks henri
    [2022/11/29 12:12] Joe Magarac (animats): Someone commented on the forums that the missing objects are not in Area Search.
    [2022/11/29 12:12] Henri Beauchamp: For missing list data, the zooming-beyond-DD works, but you must stay zoomed out long enough for objects to be pushed into the LLVOCache on disk, so that a new interest list request gets triggered when returning to normal FOV
    [2022/11/29 12:12] (whirly.fizzle): There's also this that can cause invisible objects https://jira.secondlife.com/browse/BUG-9439 - see last comments for why it happens (technically not a bug)
    [2022/11/29 12:13] Rider Linden: Area search is a Firestorm feature. My guess is that it can only show you the objects that the viewer knows about.
    [2022/11/29 12:13] (whirly.fizzle): That case crops up quite regularly actually
    [2022/11/29 12:14] Joe Magarac (animats): Right, but Area Search is a good way to tell what the viewer knows about, even if it's not showing it.
    [2022/11/29 12:14] Henri Beauchamp: @whirly: that one is a viewer issue due to a limit in the node memory in spacial groups. Can be worked around by increasing RenderMaxNodeSize
    [2022/11/29 12:14] (whirly.fizzle): Yep
    [2022/11/29 12:15] (whirly.fizzle): That's in the comments at the bottom
    [2022/11/29 12:15] Henri Beauchamp: /me lolz @ comment at bottom. Well, that's wishful thinking, really...
    [2022/11/29 12:15] Rider Linden: I'm fairly certain that the current vanishing object issue is in the interest list.
    [2022/11/29 12:16] Rider Linden: I'm not sure what we changed that could have aggravated though. I've been seeing it pretty regularly for about a month now.
    [2022/11/29 12:16] (whirly.fizzle): Is there a way to tell if that's the case? Maybe examining the slc file for the region?
    [2022/11/29 12:17] Niri Nebula: sometimes, objects with glow maps start like... fully glowing around me. Is that related?
    [2022/11/29 12:17] (whirly.fizzle): That's just slow rendering I think, that's not new
    [2022/11/29 12:17] Henri Beauchamp: @rider: there are three issues: one with node limit (the last we spoke about), another with a race condition between interest list receival and viewer pipeline refresh on login, TPs and sim crossing, and the third is a rather new "bug" (a few months ago) in which some objects are simply missing from the interest list (solved with zooming-far).
    [2022/11/29 12:17] NeoBokrug Elytis: The inverse us also true for the interest list. Objects that are not in view, but llDie() tend to hang around in a viewer.
    [2022/11/29 12:17] NeoBokrug Elytis: Not always, but often.
    [2022/11/29 12:18] Torric Rodas: what henri said... but whilst zoomed out, change your active group for a double whammy reset.. it also works on assets you have blacklisted, then removed, but fail to reappear
    [2022/11/29 12:18] (whirly.fizzle): Yeah there's JIRAs for that one
    [2022/11/29 12:19] (whirly.fizzle): Changing group tag forces object updates I think?
    [2022/11/29 12:19] Niri Nebula: whirly; i have to relog to fix it, the glowmaps would have loaded in and then after a while just... become fully glow. And it's inconsistent per object.
    [2022/11/29 12:19] (whirly.fizzle): Ahhh
    [2022/11/29 12:19] Rider Linden: Yes, That is a different issue. The object dies, but the simulator doesn't tell you because as far as it is concerned you don't know about it. However the viewer has kept it around ...
    [2022/11/29 12:19] Torric Rodas: yeah... and with the zoom out doing much the same thing, it absolutely forces a refresh
    [2022/11/29 12:20] Niri Nebula: but definitely not related to this, pardon the sidetrack.
    [2022/11/29 12:20] Henri Beauchamp: The interest list was an "interesting" idea to alleviate the load on viewers, but it is racy like Hell.
    [2022/11/29 12:20] Rider Linden: That's a strange side effect... changing groups?
    [2022/11/29 12:20] Niri Nebula: changing groups also fixes turning "only friends" off
    [2022/11/29 12:20] Niri Nebula: it's a fun one :D
    [2022/11/29 12:20] Torric Rodas: yes Rider, its worked that way for a long time. its a lil hack
    [2022/11/29 12:21] Niri Nebula: (because it has to rewrite the name tag it forces a render update somewhere?)
    [2022/11/29 12:21] Niri Nebula: that's my best guess.
    [2022/11/29 12:22] Henri Beauchamp: The changing group trick triggers some UDP messages sent by the viewer, and maybe one of them is triggering something server side that causes some objects to refresh... It is certainly the case for your attachments (since their group changes with your avatar's)...
    [2022/11/29 12:22] Torric Rodas: if you blacklist something here and take it off again and it doesn't reappear, try the wheeling back til the region is a dot, change active group and press esc twice.. and it will reappear
    [2022/11/29 12:22] (whirly.fizzle): Remember LL viewer doesn't have blacklist
    [2022/11/29 12:22] Torric Rodas: it doesn't?
    [2022/11/29 12:23] (whirly.fizzle): No
    [2022/11/29 12:23] Rider Linden: No.
    [2022/11/29 12:23] Lucy daughter of the Devil (lucia.nightfire): @torric, I made an HUD for that function
    [2022/11/29 12:23] Torric Rodas: oh is it on MP lucy?
    [2022/11/29 12:23] Lucy daughter of the Devil (lucia.nightfire): moves my camera 2k away then back
    [2022/11/29 12:23] Rider Linden: I think I saw a feature request not long ago for that functionality in the Lab's viewer though.
    [2022/11/29 12:23] (whirly.fizzle): Lucy has lots of good free gadgets in her MP store
    [2022/11/29 12:23] Lucy daughter of the Devil (lucia.nightfire): naw, thought about putting it on there
    [2022/11/29 12:23] Torric Rodas: oh please do... I love gadgets, especially ones that shouldn' work, but do
    [2022/11/29 12:24] Lucy daughter of the Devil (lucia.nightfire): I use it to show people again if I forget to turn off show only friends
    [2022/11/29 12:24] Lucy daughter of the Devil (lucia.nightfire): because FS won't render everyone again...
    [2022/11/29 12:25] Lucy daughter of the Devil (lucia.nightfire): but it also shows things I temp derender
    [2022/11/29 12:25] (whirly.fizzle): TP out & back works too (for show friends only) or change group tag :D
    [2022/11/29 12:25] Henri Beauchamp: @torric: the blacklist is a viewer-side trick: it basically skips all data sent by the server about objects in the black list, but then the server won't resend data when you just remove an object UUID from your viewer-side list, and you must trigger an interest list update in one way or another to get the object data resent. Some scripted objects which get their data refreshed following script actions (sound, particles, rotation, etc) might however reappear
    [2022/11/29 12:25] Lucy daughter of the Devil (lucia.nightfire): @Whirls, yes, but now I don't have to do all that, heh
    [2022/11/29 12:26] Torric Rodas: yes henri... its similar to slipping into wireframe when you think your hair has gone awol, which is another neat trick
    [2022/11/29 12:26] Tapple Gao: /me learned about object blacklist in firestorm today
    [2022/11/29 12:26] Torric Rodas: wireframe is the ultimate in refreshing attachments
    [2022/11/29 12:26] (whirly.fizzle): Derender all the things!
    [2022/11/29 12:26] Henri Beauchamp: @rider: it would be nice to be able to request an interest list update for a given object, via a new cap: the viewer could then request data when it needs it and missed it somehow...
    [2022/11/29 12:27] Torric Rodas: how would the viewer know it was missing?
    [2022/11/29 12:27] Joe Magarac (animats): That, in fact, is the big problem in viewer/server relations.
    [2022/11/29 12:27] Henri Beauchamp: @torric: it would work for the black list issue, since it knows the UUID of objects in it.
    [2022/11/29 12:27] Rider Linden: We do have an interest list cap. It would probably not be difficult to add that functionality to it.
    [2022/11/29 12:28] Torric Rodas: @henri ah! yes..
    [2022/11/29 12:29] Rider Linden: Can I get someone to write up a feature request for the interest list cap functionality?
    [2022/11/29 12:29] Henri Beauchamp: A "sync list" cap would be nice too: on request by the viewer, teh server send a list of all UUIDs it thinks the viewer should be rendering.
    [2022/11/29 12:29] Joe Magarac (animats): Is there a list of all the caps somewhere? I've been searching the sources.
    [2022/11/29 12:29] Henri Beauchamp: The viewer could then compare with its objects list and send a per-object (or group of object) list resync request for missing ones
    [2022/11/29 12:29] (whirly.fizzle): Henri can probably explain that JIRA the best ;)
    [2022/11/29 12:30] Henri Beauchamp: @joe: the list of caps is in LL's viewer indra/newview/llviewerregion.cpp
    [2022/11/29 12:31] (whirly.fizzle): Or develop -> Consoles -> Capability info to debug console. Dumps all the caps & URLS into the viewer log
    [2022/11/29 12:32] (whirly.fizzle): Quick way to check caps fail on a region
    [2022/11/29 12:32] Henri Beauchamp: @whirly: only for caps in the current region, yes... But there may be more

    Observed Behaviour

    Examples

  • Catwa Store: http://maps.secondlife.com/secondlife/Catwa%20Clip/143/9/22
    See "Example Video 1" attached.
    I was cam shopping on Second Life Release 6.6.8.576863 & noticed lots of objects were failing to render.
    I raised draw distance to 512m, which didn't help. The following also didn't fix it - zoomingcamera out & back, right clicking where the missing objects should be, toggling wireframe, changing group tag.

Attachments

Links

Related

Original Jira Fields
Field Value
Issue BUG-233107
Summary Objects failing to render is happening more frequently of late
Type Bug
Priority Unset
Status Accepted
Resolution Triaged
Reporter Whirly Fizzle (whirly.fizzle)
Created at 2022-12-20T23:55:06Z
Updated at 2023-03-08T21:57:30Z
{
  'Build Id': 'unset',
  'Business Unit': ['Platform'],
  'Date of First Response': '2022-12-22T13:58:06.374-0600',
  'ReOpened Count': 0.0,
  'Severity': 'Unset',
  'System': 'SL Simulator',
  'Target Viewer Version': 'viewer-development',
  'What just happened?': 'Filling in...',
  'What were you doing when it happened?': '....',
  'What were you expecting to happen instead?': '....',
  'Where': 'Any Region',
}
@sl-service-account
Copy link
Author

Maestro Linden commented at 2022-12-22T19:58:06Z

When you notice objects failing to render, sometimes doing one of the following will force the object to render, but fairly often nothing works and you need to relog to fix it.

  1. Right clicking where the missing object should be,
  2. Zooming camera out and back
  3. Toggling wireframe - see BUG-232625
  4. Rule out if it's a case of BUG-9439 - technically not a bug.
  • Case (1) would definitely be a viewer bug - being able to select the object implies that the viewer already knows about the object, but for some reason decided not to render it. Otherwise, right clicking would just select whatever object (if any) behind it

  • Case (2) could be viewer, simulator, or packet loss between the two - it's hard to say

    • I think we should focus on this case for this jira
  • Cases (3) and (4) are already covered by the other jiras you mention; both full squarely into viewer rendering

    Looking at the pasted conversation, those hints about area search not working points to a possible issue with the interest list - whether that's a matter of

  • the simulator not sending the ObjectUpdate message to let the the viewer know the object exists

  • the message being lost in transit (it's a UDP message)

  • the viewer not processing the message properly

    The next step to investigate this issue is to get a solid repro case - how can one make this happen on demand?

    I visited the Catwa store with an empty objectcache and draw distance set to 512m, and looked at the missing area shown in the video, and I'm unable to reproduce the issue there - the building appears to be intact, and I don't see any obviously missing objects.

    I also set up a test case at secondlife://Aditi/secondlife/Mainland%203/40/179/30 - this setup has 22500 large unlinked boxes arranged to form a platform, such that any missing box will be easy to see. The boxes are static, so they should offer a pretty consistent test case. Are you able to repro this issue there?

@sl-service-account
Copy link
Author

animats commented at 2022-12-27T05:45:59Z

I've been able to reproduce this. It's intermittent, but the same objects disappear. See "hyperionfirestormbad06.png", attached. There are supposed to be solid panels in that building wall, which is the big GT building in Hyperion. I've had this happen several times in Firestorm for this specific object.

Notes:

  • Sometimes getting closer makes the missing object reappear, but sometimes I was able to get really close without it coming back.

  • That missing object is part of a very large linkset, over 200 prims. Changing the LOD of the linkset via Edit has no lasting effect; going to "Lowest" will blank it out, and it comes back broken at "High".

  • Changing the draw distance may make the building disappear. Changing it back restores the broken version.

  • Attempting to edit the object will not make it appear.

  • Flying to another region out of draw distance and back made it appear.

  • I've seen this happen with both a fully loaded viewer cache and a freshly cleared cache.

    I've had this building fail with Firestorm 6.6.3, Firestorm 6.5.6. All on Linux.

    Over at Cretopia, looking northeast from 0,0, there are also missing objects. There, loading progressed normally for a while, then stopped. After several minutes of no activity, a Yava street car went by in the distance, and loading started up again, very slowly, under 1mb/s. Gradually more distant objects appear.

    Those are the two regions where I see this happen frequently. I've seen it elsewhere, but in those places it occurs frequently.

    I've even seen this happen, {}on the same linkset{}, in my own experimental Rust viewer, which is a totally different viewer implementation and architecture. I can't say definitively whether this is an interest list error or a mesh load error. But it's definitely associated with specific linksets in world.

    Tried to visit Mainland 3 on Aditi for the test described above. Currently standing on Mainland 2 looking at open water where Mainland 3 is supposed to be. World map says "Offline". 2140 SLT 2022-12-26. 

@sl-service-account
Copy link
Author

animats commented at 2022-12-27T07:21:19Z

Some large linksets to test with at Mainland 3 would be appreciated.

I've been looking at the logging in my own system, and I see tens of "orphans", objects where the child first appeared before the parent or the parent is missing. I need to look at that more closely. It's legitimate for that to happen; we're not guaranteed in-order delivery.  Orphans have to be parented when the parent shows up. You don't know their location in world until the parent shows up, because child prims have coordinates relative to the parent. Has anything changed that would make out of order object updates more likely? Such as introducing more parallelism server side?

This may be related to this issue, or not. More later.

@sl-service-account
Copy link
Author

animats commented at 2022-12-30T19:24:49Z, updated at 2022-12-30T19:44:58Z

More info. I've been testing this further with my own experimental viewer. I've been spending too much time on this, trying to make sure it's not an error on my side. My experimental viewer is 100% safe Rust, has no common code with the LL-based viewers, has a rather different architecture, and has completely different bugs. So if we see the same problem in both systems, it's probably not viewer side.

  • There are a few specific objects that tend to drop out. They're usually big linksets. The big Gentek Telecom building in Hyperion is the worst case. It has linksets with over 200 objects. I've seen this specific building with big missing linksets in both Firestorm and my experimental viewer.

  • I tested the "orphan" hypothesis by checking my experimental viewer's un-parented orphan list after scene loading was complete. While there are  thousands of child objects without parents during loading, eventually, all the needed parents showed up, the orphaned children were re-parented, and zero children were left un-parented.  The ObjectUpdate and ObjectUpdateCompressed messages described a consistent parent-child tree. So I don't think that's it.

  • I am logging zero packet loss in my own experimental viewer. That's not the problem.

  • My test setup is to request the entire region's objects. This is done by sending RegionHandshakeReply with SENDALLOBJECTS | SENDALLCHCEABLEOBJECTS | SUPPORTSSELFAPPEARANCE set, viewpoint at <0,0,0>, draw distance 400m, and look at direction <1,1,0>. This does get all the region's objects, except for a few omissions.  I don't move the viewpoint as sent to the server, and look at what showed up. Always an initial login, not a teleport.

  • For test purposes, I draw all objects at Highest LOD. So this is not a LOD problem.

  • Which objects are missing is rather repeatable. The objects which are missing are always the same ones. Sometimes they're present, but it's not that some random object disappears. It's the Gentek Telecom building in Hyperion, a clock in the Nox building in Port Babbage, and a few other very specific objects. Usually, but not always, big linksets. Big objects missing are very visible. Sometimes it's possible to get close to the object and still have it missing. Example:  hyperionfirestormbad06.png Those openings in the walls are supposed to be solid recesses. Logging in with Firestorm 8.8.3 at Hyperion/20/20/20 produced this. The missing item here is link [BUG-100683] At login and more seriously after teleporting, the scene is loading much more slowly than usual #213 out of 244 links. That one tends to disappear a lot.

  • In Firestorm, missing objects may eventually appear if the viewpoint moves. I suspect this is a problem which most users simply see as "lag", or as bad levels of detail.

    I think this eliminates but case (2) above, and focuses attention on the interest list.

@sl-service-account
Copy link
Author

animats commented at 2022-12-30T20:29:12Z

More info: See bad version and good version, below, with the same prim count. Object updates are not being lost, but some of them may be bad.

![Screenshot from 2022-12-30 12-19-13.png](Screenshot from 2022-12-30 12-19-13.png)

Bad version above. Good version below. Note 244 prims in the linkset for both.

 

![Screenshot from 2022-12-30 12-20-36.png](Screenshot from 2022-12-30 12-20-36.png)

@sl-service-account
Copy link
Author

animats commented at 2023-01-02T21:10:13Z

More notes:

Far from the viewpoint, like 250m away, but within a large draw distance, the interest list seem to omit small objects. (1m diameter omitted, 50m included.) That's reasonable. It also tends to omit objects that have small scripted rotational movement, such as clocks. Maybe even if in a child prim. That's wrong.

This may be a bug in my viewer. More later. But I'd suggest looking at code that decides some objects don't need to be in the interest list.

Mainland 3 is still offline. When it comes back up, I'd suggest having some big linksets and some simple objects with slow LLSetRot rotation. Preferably with copies in the corner far from the origin.

@sl-service-account
Copy link
Author

animats commented at 2023-01-10T19:23:25Z

![Screenshot from 2023-01-10 11-21-15.png](Screenshot from 2023-01-10 11-21-15.png)

@sl-service-account
Copy link
Author

animats commented at 2023-01-10T19:24:46Z

Mainland 3 (Aditi), the test area for this bug, is still offline.

@sl-service-account
Copy link
Author

Erik Mondrian commented at 2023-01-11T13:23:33Z

I've been encountering this same issue with some objects failing to render and requiring a relog, most recently when I was visiting the New Kadath Lighthouse Art Gallery yesterday (New Kadath/34/40/23). I noticed that some of the walls were bare, missing maps or collections thereof that I knew had previously been there. The "Early Grid" object was one of those that did not show up, even when I was standing right next to it (and even after right-clicking and moving camera out and back). It's a linkset with 27 objects. Elsewhere in the gallery, another one that did not show up until after a relog was "The Virtual University of Edinburgh" exhibit, a linkset with only 17 objects. This is, unfortunately, not just happening with linksets that are 200+.

I've included the Inspect Objects info in the snapshots, in case that helps. And I'm on Arch Linux, running Firestorm 6.6.3 (67470) Aug 27 2022 16:07:25 (64bit / SSE2) (Firestorm-Releasex64).

Snapshot_187.pngSnapshot_188.png

@sl-service-account
Copy link
Author

rick.daylight commented at 2023-01-13T20:46:22Z

I've seen this issue a lot too; far more missing objects that I'm used to seeing happen, and very often the objects will not reappear with any of the known 'tricks' like zooming out and back in, or even TP'ing out of the region and back.

This is the latest: I was testing a build with an alt, and the alt could not see the doors in the wall. My main account, also logged in, could see them.

The alt could interact with objects through the (closed) doors as if the doors did not exist, and could not click the doors to open or inspect them. However the alt could not walk through the doors until they were opened. Nothing, not even TPing out and back, made the doors appear for the alt except relogging.

Alt's view of the (missing) doors:

Snapshot_1706a.png

What was really there, view from main account:

Snapshot_1705a.png

@sl-service-account
Copy link
Author

animats commented at 2023-01-13T23:38:21Z, updated at 2023-01-13T23:39:47Z

Here's a fail which is a bit more informative. This is one of my NPCs at Bruissac. The NPC seemed to have disappeared, but the hovertext on the root prim was still showing. So I could find it and open Edit. This NPC is an animesh, with an invisible but solid root prim that's a simple cube as the collision model. The animesh mesh and other links (clothing) are gone, but the root prim remains. The root prim is still selectable. Edit says it's 22LI, which is the full total with all links, but Edit only shows the root cube. As far as Edit is concerned, the other links are just not there. Trying to advance through the links shows this.

Bruissac seems to get hit by this a lot. I've seen half the buildings missing.

Open image in a new browser tab to see it clearly.

 

@sl-service-account
Copy link
Author

animats commented at 2023-01-25T03:51:26Z, updated at 2023-01-25T05:46:33Z

Some progress:

I've found a workaround for my own experimental viewer. I delay sending RegionHandshakeReply for 2 seconds at startup, so that AgentUpdate arrives first.  For any viewer which sends AgentUpdate unsolicited but waits for RegionHandshake to send {}RegionHandshakeReply{}, that's a race.

Without the delay, my test at Hyperion for large objects not appearing failed 4 out of 10 tries.

With the delay, it failed 0 out of 25 tries.

The sim server doesn't start sending object updates until both RegionHandshakeReply and AgentUpdate have been received. That's correct behavior, because it needs info from both of those messages to decide what to send. But the order in which they are sent does seem to make a difference. It shouldn't.

Since the SL UDP network protocol does not guarantee in-order delivery, it's the receiver's job to cope with out of order messages. So this would appear to be a sim-side  bug. Working around it from the viewer side is possible, but to do it right, the viewer would have to insure that the AgentUpdate message was acknowledged, not just sent, before sending {}RegionHandshakeReply{}. This requires message delivery tracking, which the network level does not currently have.

So, it looks like an out of order receive condition is being incorrectly resolved by the sim servers.

 

@sl-service-account
Copy link
Author

Henri Beauchamp commented at 2023-01-25T21:25:59Z, updated at 2023-01-25T21:45:58Z

@Animats

The problem is that, when I tried to thread the LLVOCache file reads in my viewer (to prevent the FPS hiccups seen when these reads happen), I also delayed the RegionHandshakeReply reply until the read was completed (so that the cache is primed and the viewer can set the proper flags in that reply, to tell the server whether it actually got a cache for that region or not, which determines whether the server will send cache probes or just anything in the interest list).
I then observed a weird second (and sometimes a third) RegionHandshake coming in from the server, even before the first RegionHandshakeReply was sent by the viewer. Also, it looks like the server does not even wait for the first RegionHandshakeReply before sending object data (this caused totally empty neighbour regions in some occasions, in my case, probably because the data for them was sent even before my threaded read would complete, meaning on completion the received data was wiped out).

So, your workaround may work for your Rust viewer since you are queuing messages in it (which is not the case for other viewers, that process them in real time, as they come in), but it will not work for other viewers (the delay in the RegionHandshakeReply seems to confuse the server; maybe it makes the assumption that its first RegionHandshake message got lost and is resending one ?).

Note also that AgentUpdate is a message sent by the viewer in both process_agent_movement_complete() (which is a callback ran as a reply to the AgentMovementComplete message from the server, the latter arriving after a completed TP or login), as a "reliable message", and every second (or when something about the agent changed) from the idle loop of the viewer, as a normal message; on login and far TPs, the AgentUpdate reliable message might contain a very approximate FOV (camera axis) info, which might explain the bogus interest list with "missing" objects in it...

@sl-service-account
Copy link
Author

animats commented at 2023-01-25T22:21:51Z

 (the delay in the RegionHandshakeReply seems to confuse the server; maybe it makes the assumption that its first RegionHandshake message got lost and is resending one ?).

So that confirms that the sim server's behavior can be made to change depending on the timing of those messages. That's what I see, too.

Viewer side workarounds for this are just for testing. This has to be fixed sim-server side, so that behavior doesn't change just because one message came in early or late. Otherwise, random network delays will continue to cause intermittent failures.

@sl-service-account
Copy link
Author

Beq Janus commented at 2023-01-26T01:09:07Z

@henri

I think I concur with the FOV/culling having some role in this.

I went to a location suggested by @Animats today to see if I could reproduce the missing items, and while I could certainly see missing parts, it seemed to me not so much a race condition type effect but poor frustum culling, as you suggested. In particular, a tall building that, on first login/arrival, towers above your vertical FOV loses wall panels; these panels are large prims, possibly mega, but certainly large enough that the centre of the object is offscreen. This led me to wonder whether there was some overly aggressive culling going on. As soon as I cam up a little to get a "clear view" of the missing items, they appear.

@sl-service-account
Copy link
Author

animats commented at 2023-01-26T02:31:17Z

I'm getting exactly what Beq describes today. Note the missing wall panels of the large building.

It's not a LOD problem; I can change the LOD factor and it has no effect.

As Beq says, it's as if the center of those large objects has to be within the viewing frustum.  This particular bug is quite consistent.

But, as you can see from the pictures above, there are other fails.  There are cases where you can approach the building closely and still have pieces missing. Tonight, I can't reproduce those.

We may be looking at two different bugs here.

![Screenshot from 2023-01-25 18-07-57.png](Screenshot from 2023-01-25 18-07-57.png)

@sl-service-account
Copy link
Author

animats commented at 2023-01-26T02:54:55Z

Now, here's the fail that does NOT seem to be related to the viewing frustum. Here, I can cam around and get the entire area of interest in the viewing frustum and still not get some objects loaded. Those specific building panels are one of the objects that disappear reasonably often.

All these tests are right after a login.

![Screenshot from 2023-01-25 18-39-35.png](Screenshot from 2023-01-25 18-39-35.png)

@sl-service-account
Copy link
Author

Henri Beauchamp commented at 2023-01-26T09:00:41Z

@BeQ

I went to a location suggested by @Animats today to see if I could
reproduce the missing items, and while I could certainly see missing
parts, .../... As soon as I cam up a little to get a "clear view" of the missing items,
they appear.

Beware, you might be seeing "the other bug" here with missing objects being due to a race condition between incoming interest list data from the server and the pipeline objects rebuilding in the viewer; that other bug is worked around, viewer-side, by any of the following actions: camming around the missing object, right-clicking in the "empty place" where they are located, switching wireframe on/off, or using the TPV built-in "Refresh object visibility" feature (initially implemented by Marine Kelley in her RLV viewer, and that I extended/improved when backporting it to my viewer, by adding an auto-trigger feature that kicks in a couple seconds after each login, far TP or sim crossing).
If you can see the objects reappear when camming around (not far), then this is not the bug dealt with by this JIRA issue.

The only workaround for the bug in this JIRA issue (short of relogging or TPing far away and back in), is to zoom out far, far away (beyond draw distance), wait a few seconds, and reset the camera to its normal FOV.

This led me to wonder whether there was some overly aggressive culling going on.The culling is done exclusively viewer side, based on the info sent by the server via the interest list. The server does not do any culling of its own for the objects in the latter. So, no, it's not a culling issue, but just that the object is not in the viewer object list, but yes, their absence might be due to the fact their center was not in the approximated FOV initially sent by the viewer in the first AgentUpdate message...

@Animats

As Beq says, it's as if the center of those large objects has to be
within the viewing frustum.  This particular bug is quite consistent.

But, as you can see from the pictures above, there are other fails. 
There are cases where you can approach the building closely and still
have pieces missing. Tonight, I can't reproduce those.

We may be looking at two different bugs here.

Yes, there are several bugs that appear to have the same effect for the end user(missing objects), and even the "new" (introduced early in 2022) bug may have a couple causes (race condition and/or FOV issue)...

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