Arduino_promini_program_continuously_crashing_with_External_INTERRUPT1_enable

Hi,
My question is how come atmega328P can print the statement which is in setup() more than one time ?

Here i will attach two codes in which i have enable both external interrupts.When there is signal come at external interrupt 1 it should increment my variable which is in ISR and print the value of that variable. But what is happening ,when ever signal come on the pin it prints the message again and again which i have written in setup().How? and WHY?

I know that use of Serial.println() in ISR is not appropriate but i am just using for debugging purpose it will not be present in my final design.And i have also tried with move that Serial.println() in loop() but still facing same issue.

There is also one other program(working code) in which i have use same logic to print the same variable it works fine in that code.Then how come the same logic is not acceptable for my nonworking code?

Did i miss something which i dont even aware of even after working on arduino since almost 1year.

Plz guide me....
.............................................working code......................................................................

volatile unsigned int pulse = 0;

volatile unsigned int timer_tick = 0;

double accumulated_water = 0.0;

//--------------------------------------------------------------------------------------------
void external_interrupt_setup(void)
{
 EICRA = 0x0A;                               //falling edge on INT0(bit 0th and 1st) and the falling edge on INT1(bit 2nd and 3rd) generates interrupt...
 EIMSK |= 0x03;                              //INT0(0th bit) and INT1(1st bit) interrupt mask enable...
}
void timer1config(void)
{
 //cli();
 TCCR1A = 0;                                 //clear timer/counter control register A.
 TCCR1B = 0;                                 //clear timer/counter control register B.
 TCNT1 = 0;                                  //clear count register.
 OCR1A = 15624;                              //To generate Timer compare interrupt every 1 sec when CPU clock frequency is 1000000Hz(1MHz)
 TCCR1B = 0x0B;                              //turn on CTC mode(clear timer on compare) as well as prescaler(64)[1000000/64 = 15625].[CS10(bit 0) and CS12(bit 2) for prescaler,WGM12(bit 3) for mode selection]
 TIMSK1 = 0x02;                              //enable timer compare interrupt(using OCIE1A(1st bit)).
 //sei();
}
void setup()
{
 Serial.begin(9600);
 external_interrupt_setup();
 timer1config();
 Serial.println(F("HELLO WORLD"));
}

void loop()
{

 if(pulse >= 428)
 {
   accumulated_water++;
   pulse = pulse-428;
 }
 
 if (timer_tick == 60)
 {
   accumulated_water += (float)pulse / 428.0;
   Serial.print(F("WATER = "));
   Serial.print(accumulated_water);
   Serial.println(F("Lit/Min."));
   timer_tick = 0;
   pulse = 0;
 }
}
ISR(TIMER1_COMPA_vect)
{
 timer_tick++;

}


ISR(INT1_vect)
{
 pulse++;
 Serial.println(pulse);
}

...............................................working code END.................................................................

.................................................nonworking code.................................................................

volatile unsigned int pulse = 1; //using for calculating number of pulses...
void external_interrupt_setup(void)
{
 EICRA = 0x0A;                               //falling edge on INT0(bit 0th and 1st) and the falling edge on INT1(bit 2nd and 3rd) generates interrupt...
 EIMSK |= 0x03;
}
void setup()
{
 Serial.begin(9600);
 external_interrupt_setup();
 Serial.println(F("HELLO_WORLD"));
 Serial.println(pulse);
}
void loop()
{

}
ISR(INT0_vect)
{
 pulse++;  
  if(pulse++%10 == 0)
   Serial.println(pulse);
}

..................................................non working code END......................................................

i am using 1.6.5 IDE.