Crashes are usually caused at lag spikes, when you have defined wait times to do a set of actions...
Most scripts that use recalling, end up having some crashing issues at some point, if the user experiences lag...
What I do to debug this on my scripts, is pause the script everytime I get a crash, and see exactly which lines are being executed at the time of the crash to try and make that part more "condition based", instead of "time based"... That usually helps a bit...