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.