I have seen similar things which were never resolved.
You should know that even with a restart, unlike any other computer program you've ever seen, Maple doesn't always follow the same path each time it is run for reasons that escape me, but somehow make sense to the Maple developers. You often see this if you are using pattern matching and/or substitution - consecutive identical runs don't always succeed because the patterns are different but equivalent (two minus signs instead of a plus, for example). It makes programming difficult to say the least, unless you cover all possible variations that Maple may come up with.
So, even if you are restarting your program, it doesn't necessarily follow the same path each time, and once-in-a-while goes off on a path that you (or the developers) may not have considered. Try trivial things like changing the order of two statements where it shouldn't matter. I have noticed that "simplify" is especially prone to this problem. If you are using "simplify", try using one of the options to limit its operation to your case. I have long suspected that many of the built-in commands call "simplify" internally, in which case you have no control.
Also, be careful with your definition of freezing - sometimes the program path is just taking a long time. If the time clock on the bottom right changes, even at long intervals, and memory report jumps once-in-a-while, its not frozen, just taking its own sweet time (which can approximate eternity). In this case, the problem is that Maple has run out of memory.
Use taskmanager to keep an eye on this - the disk may be thrashing as memory is swapped in and out and whether or not you get a "freeze" will depend on the state of your machine. Buy more memory if possible. Try judicious use of garbage collection (gc).