Interrupts and Bouncy buttons. How to Solve??

To avoid the millis reset problem you could do something like this:

#define BOUNCE_DURATION 20   // define an appropriate bounce time in ms for your switches
 
volatile unsigned long bounceTime=0; // variable to hold ms count to debounce a pressed switch
 
void intHandler(){  
// this is the interrupt handler for button presses
// it ignores presses that occur in intervals less then the bounce time
  if (abs(millis() - bounceTime) > BOUNCE_DURATION)  
  {
     // Your code here to handle new button press ?
     bounceTime = millis();  // set whatever bounce time in ms is appropriate
 }
}