Engine crash when equipping tool with a fake client-side character

TL;DR

If your character was created and assigned to a client-side character model while streaming is enabled, attempting to equip a tool crashes the engine.

I’ve attached a repro place here. Simply hit ▶️Play and try to equip the Tool in your hotbar.
CrashRepro.rbxl (54.6 KB)

Background (a.k.a. how I even found this crash)

I’m utilizing a server-authoritative character system called Chickynoid, which runs a completely custom deterministic physics simulation, similar to ones seen in games like Quake and Half-Life. The client creates all of the characters seen in the game world, no server-side character models actually exist (except for hitbox parts which aren’t replicated to clients, but that’s not relevant here).

To make Roblox’s existing avatar scripts play nicely, Chickynoid assigns the LocalPlayer’s Character to the fake clientside character it controls. This is undefined behavior, but it generally works fine except for oddball cases like this. The crash only happens when there’s any parts inside of the Tool object while streaming is enabled. Setting the ModelStreamingMode of the tool to Persistent or Atomic makes no difference.

4 Likes

Thank you for the report.
We have found the source of the crash and will be looking at fixing it.

3 Likes