OneSync Duplicate Object ID Issues

Client

Using canary? Yes, all clients
Windows version: 10

Server

Operating system: 10
Artifact version: 2694
Resources: < 10

Incident

Summary: Duplicate object/net IDs leading to player sync issues

Behavior:
When rapidly spawning vehicles using the below code, occasionally (fairly frequently) a vehicle will fail to delete, as it shares a net ID with another player / object in the world. These vehicles are only visible to one client, both the server and any other clients do not see the vehicles.

Symptoms:

  • Vehicles which only appear for one client, almost as if they are not networked (however, they are)
  • Invisible players (which in reality are just players stuck in a certain location, where movement is no longer synchronized to a specific client)

Steps to reproduce:

  • Client A and Client C run the rapid spawn script (/spawncycle)
  • Client A, B and C observe the occasional vehicle which does not delete
  • Client B observes a vehicle with the same object ID, as Client A’s object ID (as in the player object of client A).
  • Client B no longer observes movement from Client A, however their ped still exists in the exact location when the “broken” entity was created.
  • Client A cannot see the vehicle Client B can, and the vehicle does not exist according to the server

Server/Client?
Both, hard to tell which causes which :frowning:

Additional Info

  • Latency was not a factor. This was tested on 2 clients with < 30 ping
  • /spawncycle will toggle the rapid spawning of cars to create these “broken” entities
  • /ctp will teleport to any given object ID according to that client
  • /stp will teleport to any given object ID according to the server

Files for repro (if any):
repro.zip (1.5 KB)

To expand on the other issues it causes, regarding vehicles we found some other information

  1. Both clients ran the /spawncycle command for about 60 seconds, and then disabled. Both clients were left with a few cars which were only visible to them (note the object ID 22 on client A, but not client B)


    Client A object list
    image
    Client B object list

  2. Client B spawned a car using vMenu, which had an object ID of 22. This car was not visible for Client A. Instead, the player could be seen in one of the “broken” vehicles created during the spawncycle script


    Client B object list and vehicle

    Client A object list and vehicle

Note: To find the vehicle with the duplicate object ID, use /ctp (object id) on the client who cannot see the vehicle

Here is a short clip from both perspectives to easier demonstrate the issue. Client B is the top screen, and client A is the bottom.