econjack:
Try looking at calls to freeMemory() in loop() to see if you're hitting its max:
It's not an SRAM issue, and it's not related to running out of flash memory. It's a linker error- essentially, the linker is trying to use a relative jump/call to execute code, but the destination code is too far away to be reached by a relative jump/call. The issue has been discussed at various times. I don't remember the outcome but I'm sure that if you search for Arduino relocation truncated to fit you will find the discussions about it.