It is always possible to inadvertently create an infinite loop in your javascript, service diagrams or even in BPDs, I have seen it happen at least once in every project, the symptoms are the same every time Process Center stops responding after running a service or BPD and eventually becomes totally unusable you try it couple of times and the same result it does not occur to you immediately but after couple of restarts of PC you realize it is happening again, either the administration team will start looking at the Process Monitor ( In Process Admin Console) or the developer and see that one of the services and steps stands out from the rest and is the most expensive step nowhere near the other steps that's the culprit, look at the code in the step e.g. one way it can happen is using the same variable in two loops and never reinitializing it.
In case of a BPD it is different, it is mostly because of a timer based loop or a IME