Timer 2 Interrupt and program struck Problem

am using Arduino Mega2560, i have used timer2 as interrupt after 2ms on flag overflow, but somehow it works only once. I have used serial monitoring as you can also see and this tells me that timer interrupt is invoked but then interrupt is not invoked again and program control does not go back in the loop also since it displays "13" and "22" only once. At least it should have displayed "22" continously after timer interrupt was called.Can anybody tell me why timer interrupt does not get invoke again and why it does not return to loop after interrupt.?

#include <avr/io.h>
#include <avr/interrupt.h>

int eraser=0;             //0=000

ISR(TIMER2_OVF_vect)
{
  TIMSK2=0x00;
  TCCR2B=0x00;
  TCCR2A=0x00;
  TCNT2=0;
  TIFR2=0x00;
  Serial.println(33);

  TCNT2= 131;         //reset timer count to 125 out of 255. 
  TCCR2B=0x6;     //using a prescaler of 6 to use divisor 256.
  TIMSK2=1;      //timer2 Interrupt Mask Register. Set TOIE(Timer Overflow Interrupt Enable).
}


void setup()
{
  /*Timer0 would not be used as it is used for other functions.
    Timer 5(pin D47) for encoder and interrupt 2(pin 21) for encoder.
    Timer2 is 8 bit we'll see if it can be used for time interval between two encoder counts.
    This leaves us with Timers 1,3,4,5.
    Timer 3(5,3,2) and 4(8,7,6) will be used for motors.*/

  Serial.begin(9600);

  TCCR2B&=eraser;
  TCNT2= 131;         //reset timer count to 125 out of 255.
  TIFR2= 0x00;      //timer2 interrupt flag register: Clear Timer Overflow Flag. 
  TIMSK2=0x01;      //timer2 Interrupt Mask Register. Set TOIE(Timer Overflow Interrupt Enable).
  TCCR2B=0x6;     //using a prescaler of 6 to use divisor 256.
  /*
  so it takes 62.5ns per tick in a timer and having set 
  divisor of 256 so it will take 16usecs per inc and setting 
  timer2 to 125 would make it count 250 times so 
  time=62.5nsec * 256 * 125=2msec. 
  clkTn
  TCNTn Timer Counter Register
  TCCRnA has LSB of WGM(wave generation mode bits)
  TCCRnB Timer Counter Control Register: has LSB of CSn2,CSn1,CSn0.*/ 

}

void loop()
{ 
 
  Serial.println(1);
  while(1)
  {
     
     Serial.println(22);
  }
}

Why are you completely reprogramming the timer in its own ISR? That's likely to
cause issues.

Anyway the problem that is obvious is you are calling Serial.println inside an ISR.

You cannot do this, Serial relies on other interrupts being active and all interrupts are
disabled during ISRs.