ConfigurableJoint Projection Angle issues if any axis is locked

I’ve been mucking with this and searching around online for info for the past 4 hours without any luck, so I’m really hoping someone here can point me in the right direction.

I’m in Unity 5.3.2f1 and I can’t seem to get the Projection Angle var to work on a ConfigurableJoint if the joint locks rotation in any of its axes.

I’ve tried this in the context of my actual project and in a fresh and clean empty project with default physics settings and no cruft, but the result’s the same. I’ve also tried pumping up the solver iteration count and mucking with other global physics settings and none of that has helped.

I’ve gotten it to break with the simplest of setups. Two rigidbodies, not parented to each other, connected via a single Config joint. That joint sets the X axis rotation to “Limited” and specifies limits. Let’s say -45 and 45 for the low and high angle limits respectively. The other two axes are set to “Locked”, or alternatively to “Limited” with an angle limit of “0”.

Running the simulation like this, things are fine. The bodies fall to the ground and limit themselves. I can rotate one of the blocks and the other uses the joint to rotate as expected.

I go back to their joint and set Projection Mode to Position and Rotation. I run the simulation and things still work fine.

Now I go back again and update the Projection Angle to be a lower value than the default 180 (which as far as I can tell is a value that does nothing). Let’s say 150. Running the simulation again the boxes immediately flip out and fly off the screen.

Freeing up the locked axes or giving them limits of at least the default value (3), the simulation runs fine again.

What gives? Am I missing something obvious? Is it conceptually just nonsensical to use a Projection Angle if any single axis is locked? Is the field just busted?

If I were you I would just manually reproject: check the angle of the two bodies every frame, and if it’s too far out physically move the errant body.