Hallo, da muß ich dem linux_80 recht geben,

Interrupts sollten immer sauber verlassen werden, und zwar legt der µC die Rücksprungadresse auf dem Stack ab, damit der weiß wo er naher wieder zurückspringen soll. Wenn Du jetzt aus dem Interrupt irgendwohin anders springst bleibt die Adresse auf dem Stack drauf.
Irgendwann ist Dein Ram voll, alle Variablem gelöscht, und der AVR schmiert erst recht ab.
Es wäre wohl denkbar irgendwoanders hinzuspringen, mit zwei pops die Rücksprungadresse aus dem Stack zurückholen, und die Interrupts wieder einschalten, aber ich denke daß es kalter Kaffee ist und eine ganz schlechte Art zu Programmieren.

Finde lieber raus warum Dein Programm immer abschmiert.

Gruß Sebastian