Automated Reptile Control System(webserver, Data Logging, RTC and much more)

You probably need to sprinkle them around more places. I've had to go so far as to put them before the return of many routines to get a clue what was happening. Sometimes when you're recursing, the level of recursion can get so deep that you run out of memory. If it returns, the memory unwinds back to a good level. This can happen when some routine allocates and then calls something else as well.

You can get lost and not have any idea what the heck happened until you really start to dissect it.

But then, you could also just be running past the end of some buffer somewhere and clobbering yourself. These problems can be tough to find. Been there, done that...sigh.