Destroying weld Part0/1 causes erroneous random welds to other parts + can crash test server

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.

RobloxPlayerBeta_2018-10-07_02-41-58

Also allegedly this has been an issue since at least 2010.

16 Likes

Thank you for finding this. I have been having the same problem as well, and got results like this…
image

6 Likes

I’m testing a fix now. Hoping to get this in a release soon.

Ended up rewriting most of the JointInstance logic to be much simpler and consolidated than it was before. Feels good.

Update: Tried this week. Crashed servers. Will try another iteration next week Fix is enabled

8 Likes

Could we get an update on this? :slight_smile:

1 Like

This should be fixed for version 360 clients now, change was enabled as of 4:52 PST.

That was as soon as I could possibly release it. Especially if you make a mistake the first time around!

5 Likes

Thanks a ton for your quick attention! Hopefully this time everything’s good.
I’ll test my game in a minute and see if anything terrifying happens lol.


Everything seems to be working perfectly.

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.