Welds that lose a Part0 or Part1 will randomly connect to other parts in workspace as they’re created, in a manner that appears desynchronized with the server and other clients. This can also kill multiple players when one of the players who appears connected to other players resets.
Obviously this can be gamebreaking and shouldn’t happen.
This only seems to happen when one of Part0 or Part1 becomes nil by the part being destroyed. Setting Part0 or Part1 to nil will not cause this to happen. Smells like pointer / reference issues?
Note that this issue is extremely exacerbated by this upcoming change, because it stops welds from being destroyed when one of the two involved parts is destroyed:
Here is a repro file, it has AutoJointsMode = Explicit
from the above thread:
ButWhyWelds.rbxl (13.1 KB)
- Start a test server with at least 2 players
- Wander around and watch what happens between clients and the server as the welds pile up
Note:
- Characters will teleport to each other and sometimes become welded together
- The loose red parts will sometimes get welded to characters
- Resetting seems to make it happen faster and can sometimes kill other players
- In the script creating these welds, Part1 is always destroyed after 2 seconds. When I remove the 2 second wait before destroying Part1 and then switch to the server window, the server can crash requiring I restart studio. This appears to only happen after starting and ending at least one test server. This smells like memory corruption.
Players teleporting to other players and getting stuck together
https://gfycat.com/UnfinishedFewAsiansmallclawedotter
Parts teleporting into players, and players resetting killing other players
https://gfycat.com/MammothHardtofindAmericanmarten
Crash
https://gfycat.com/DimwittedPertinentGermanshorthairedpointer
I found this issue while testing AutoJointsMode = Explicit
in one of my games. It was indeed gamebreaking.