You’re setting fixedDeltaTime to an extremely small number is why:
The expression 1f / 60f * 0.001f
becomes about .0000167
.
Try it yourself on a calculator.
When you feed ultra-micro-tiny or huge numbers into existing systems like physics, they become unstable.
Keep everything within one (or perhaps two) orders of magnitude of 1.0 and things will be much happier, eg, 0.10f to 10.0f for scale factors like this. This is just how floating point numbers work.
Floating (float) point imprecision:
Never test floating point (float) quantities for equality / inequality. Here’s why:
https://starmanta.gitbooks.io/unitytipsredux/content/floating-point.html
https://discussions.unity.com/t/851400/4
https://discussions.unity.com/t/843503/4
“Think of [floating point] as JPEG of numbers.” - orionsyndrome on the Unity3D Forums