Quaternion orthogonalization?

When using Quats for rotation, do you need to orthogonalize them after a while to maintain consistency?

I’m having my app occasionally lock the rotation to a default, and it won’t move anymore. Also, occasionally, the app itself will lock. I’m wondering if I’m doing a divide by zero somewhere under very particular cases which causes all this.

Any ideas?