BeamMP / BeamMP-Server

Server for the multiplayer mod BeamMP for BeamNG.drive
https://beammp.com
GNU Affero General Public License v3.0
136 stars 55 forks source link

[Bug] Rapid Player Teleportation bug #119

Open OfficialLambdax opened 2 years ago

OfficialLambdax commented 2 years ago

Fill out general information OS (windows, linux, ...): Likely Both BeamMP-Server Version: rc-v3.1.0 ? @lionkor

Describe the bug A players car will teleport rapidly between two positions on the map. Between his actual position and another of unknown origin. This seems to affect any player that obtains a ID from the server that became "faulty". Multiple factors lead to the assumption that the now faulty ID mixes positional packets (Zp) of unknown origin (maybe from a previous player) with the actual.

All affected players have a highly fluctual ping, while they are affected. Ive gone over the issue with a affected player, he verified his game files (all clean) and reconnected with another ID and then was no longer affected. His ping was steady then.

Ive captured a instance of this bug via wireshark https://ufile.io/vez1u3cz

The affected player in this cap is of ID 2. When looking into the cap, you will see the server sending two Zp packets directly after another. One of which is is actual positions and the other a faulty. Also noticable is the ping difference in these packets. But generally, the structure of the packets and their content are very unusually different. eg. https://pastebin.com/VFjqSQiP

Ive seen everyone connecting with a specific ID to be affected by this bug. Their ping was always spiking between their actualy and another from unknown origin.

A video of that can be found in the old Bug report channel of beammp (channel got archived/deleted) at the near bottom.

To Reproduce Steps to reproduce the behavior: Unknown

Logs @lionkor

lionkor commented 2 years ago

Version is rc-v3.1.0. This is very odd behavior!

OfficialLambdax commented 2 years ago

The bug is old by now. Ive seen this being reported in the old bug-report channel of beammp. The official servers where affected back then

OfficialLambdax commented 2 years ago

What yet has to be discovered is if the game/launcher is sending the faulty packets alongside the actual or if its the server. I would guess its the server, because only players that obtained ID 2 (when i saw it) where affected. Game installation was clean and the mod installation likely too, as verified by a affected player.

snepsnepsnep commented 2 years ago

So the server is receiving valid data, but sends out two different positions under the same player&vehicle ID one after another?

I've encountered that bug on a server before but haven't been able to diagnose where the issue was coming from, other than seeing that I was receiving two positions one after the other for the same vehicle. I assumed it was a weird client bug on the sending side.

OfficialLambdax commented 2 years ago

I assumed the same, that it might be a client thing. But to me it points to the server being the trouble maker. If someone would cap the traffic from the side of the affected or from the side of the server then we would know for sure where to look at

snepsnepsnep commented 2 years ago

I'm fairly certain this bug happens because two different clients somehow end up with the same local server ID and both end up sending data under the same ID, causing the same vehicle to teleport between two positions.

OfficialLambdax commented 2 years ago

Interesting theory, problem being why are there only double the amount of Positional packets and no other

lionkor commented 2 years ago

Its all in TVehicleData and TClient (probably) - I assigned this the "help wanted" label, maybe one of us can see if they spot a bug there ;)

lionkor commented 2 years ago

Removed from the milestone, as there is no way for me to reproduce this.

lionkor commented 2 years ago

Probably closed by v3.2.0 (after talking to the other devs). Closing with merge of v3.2.0, reopen then if not fixed after all.

OfficialLambdax commented 2 years ago

I heared player complaining about other players rapidly teleporting and ive seen it myself. It seems to happen just very rarely aka in just certain circumstances that are completly unknown to us. I will leave a comment when i or someone else sees it again

OfficialLambdax commented 2 years ago

I'm fairly certain this bug happens because two different clients somehow end up with the same local server ID and both end up sending data under the same ID, causing the same vehicle to teleport between two positions.

That might have been a right guess - https://github.com/BeamMP/BeamMP-Server/issues/154 - we gonna see if we ever see this bug again after v3.2

lionkor commented 2 years ago

I mean, #154 is extremely unlikely to happen, this is two players calling OpenID() within the same 0.1ms or so

lionkor commented 2 years ago

It's more likely other issues that were also fixed in 3.2.0