Daram,
I can't possibly reach all conclusions without looking at the code and the debugging process, therefore I can only make some comments.
At first, if this issue always happens at the same location in your code (i.e., not random) it becomes easier to debug. In this case, I would open the Disassembly view to perform an assembly step-by-step debugging and carefully inspect the behavior of the registers.
A bit more specific to this issue, the symptoms you describe are very indicative of either a corrupt stack, which would cause the program to jump to an invalid location and thus potentially causing the DSP core to halt, or an invalid write to a configuration register, which would misconfigure the PLL, external RAM, or other critical component of the system.
The causes for this corruption of a pointer can have many sources, ranging from insufficiently sized stack or heap to misconfigured peripherals or DMA - these could overwrite the sections of the code or data inadvertently (although the peripherals or DMA would happen at random locations in your code). One interesting example of heap allocation problems is shown at this discussion.
Hopefully these suggestions may help you get additional details about the running system.
Regards,
Rafael