If you have managed code in lieu of a profiler worth using I've found that throwing a log message into your code is damn useful for spotting infinite loops and general multi thread progressions.
i.e
step 1 msg
step 2 msg
thread now 100% and no step 3 msg = bug.