Louis,
What do you mean by hang? Does the program simply appear to stop doing anything, or does the unit re-boot and start flashing the status LED?
Assuming that it is the latter (which is a crash), the most likely culprit is memory allocation. Assuming that it is the former, than you will have to add in diagnostics to assist you in tracing the source of the hang. A question that comes to mind is are you using the Error cluster, and if so, how are you handling errors? If you wire the error cluster to all of the VIs, but do nothing to handle it, then after an error occurs, most VIs will stop executing (if Error Status==True).
I recently had a program that appeared to hang after 24-48 hours. The system had 8 parallel loops each running a state machine and only some were getting hung. I added debug information to each loop through by using the PublishData.vi and published separate information on the state of each loop. By watching the timestamps and information, I was able to determine in which states the loops were when the hang occurred, and then added more debug markers in the specific states to further isolate the cause. I repeated the process until I had identified the specific VI that caused by hang. You can also use the LEDs (A-D) to display status information of the program.
Regards,
Aaron
LabVIEW Champion, CLA, CPI