Hi Mike,
Just had exactly the same indications. I isolated and fixed the problem - the problem was in strcat, strcpy and other string functions. Turns out that if you don't keep track of how big the string becomes further operations overwrite the boundaries you have declared and shove string data into areas it shouldn't go. In my case I just did a memcpy of 0 into each string before I did anything to it.
Good luck,
Peter