strncpy() causes reset

liudr:
You should move your Serial.print strings to PROGMEM.

A lazy way is to use the Serial.print(F("ahaqoihio"));
Unless every output string is unique you are duplicating strings in PROGMEM.

I'm going to do that. I learned a lot about strings and RAM in trying to debug this problem.