If Arduino scetch on Mega includes serial.begin(XXXX) -line, the program hangs easily.
If some data is sent to serial port right after opening it on PC, Arduino program hangs.
But if the port is opened, some wait delay applied and then data sending started. Program works nicely.
So Mega needs some time to get back on track after port is opened from computer side. In other case scetch will hang/crash.
Same phenomenon doesn't occur on Duemilanove.
This same topic is discussed on my Project related thread**, but I decided to post this also here since it seems to be a low level problem.