There has been issues like this related to servers. The instances I have seen this were either due to the user profile for the Robot was corrupted and could not create a login session (this usually means the process never started at all), or there is a Windows popup/crash message on the session that did not allow the Robot to throw an exception on in which you would need to identify the source of the error and suppress it, typically.
So, I think you need to figure out at what point does it get stuck through monitoring its logs (also logging into the server when it is stuck can tell what it is doing also). One issue with troubleshooting this too is that if the login session does not exist, the robot creates it then logs off when it is complete, so you can’t see what happened when you Kill the process to stop it. But, if you log in to create the session on that robot, then it won’t log off after it is complete (from my understanding) - this is assuming you have access to the robot user profile to login with.
It’s kind of tricky solving server issues.
Also rule out infinite loops in your code, like if you have any Do while that need an exit routine.