Unity freezing without any while loops, only in editor

Hey everyone, so the project I am working on is rather new, but we encountered a recent problem.

Typically, 1-20 seconds into the project, it freezes completely as if I had an infinite loop. I cannot pause the game, it will not react to anything I touch, and I have to end the process to try again.

I have no code that even touches a while loop, or any non-determined loop for that matter.

I tried debugging with MonoDevelop debugger, but it says it could not connect.

One last strange thing is… It does not crash when I build and run the project. It runs completely fine, with no issues whatsoever. It only persists in the editor.

And sometimes, every once in a while, it ends up closing after it freezes and asks me to submit a bug report, but that rarely happens.

Any pointers or suggestions?

I figured out the solution, it was due to some faulty code, but it still confuses me when I look back at it.

Basically, we have a mouse controller which uses an external DLL to control input for up to 4 mice. Inside of that, we determine the chance in mouse position, and move a reticle (now obsolete) to point towards where the player wants to aim.

This chunk of code was used to rotate a center body that would be holding any weapons or items the player picked up, to show how they are aiming it or moving as their view shifts. I can’t properly comment it, as the coder who wrote it did not discuss it that much with me.

Vector3 rotation = new Vector3(0, 0, -center.localEulerAngles.x);
center.transform.localEulerAngles = rotation;
if(reticle.transform.position.x < player.transform.position.x) {
       center.transform.localEulerAngles += new Vector3(0, 180, 0);

So this code would be called at most 4 times every update function. I figured that rewriting the code without the LookAt() function would be best, since that is intended for 3D and our game is 2D.

firingVector = reticle.transform.position - center.position;
firingVector.Normalize(); //normalized for later use
float rotZ = Mathf.Atan2(firingVector.y, firingVector.x) * Mathf.Rad2Deg; //moving the rotation of the center here
center.rotation = Quaternion.Euler(0, 0, rotZ);

It still confuses me, because replacing this code inside each individual player would fix it. What is even more confusing is that this isn’t always 100% reproducible, since it could freeze from 0-30 seconds of using an item, and picking it up (setting it as the child of the center). So if anyone is stumbling across this and has any input or ideas of what this could be, that would be appreciated.