Help with sevseg library

So I'm making this tachometer project and ive run into a snag with the sevseg library for displaying to a two digit multiplexed display.

this is the code:

#include<SevSeg.h>
SevSeg sevseg;
long timeCurInt, timeOldInt, timeCur, timeOldRPM, period = 0;
long debounce = 400;         //time for debounce in micro seconds (interrupts disabled after interrupt for this amount of time)
long RPMupdateRate = 1000;    //update rate for RPM in millisecond interval
long displayUpdateRate = 32;   //update rate for display
volatile unsigned int RPMcount = 0;
int RPM = 0;
volatile boolean bounce = 0;

void setup() {
      byte numDigits = 2;
      byte digitPins[] = {11, 12};
      byte segmentPins[] = {4, 5, 6, 7, 8, 9, 10};
      sevseg.begin(P_TRANSISTORS, numDigits, digitPins, segmentPins);
      sevseg.setBrightness(50);
      Serial.begin(9600);
      attachInterrupt(1, rpmTrigger, RISING);
}

void rpmTrigger (){
  if(bounce == 1){
    RPMcount++;
    bounce = 0;
  }
}

      
void loop() {
  timeCurInt = micros();
  timeCur = millis();
  
  if (timeCurInt - timeOldInt > debounce){            //enables interrupt 1 after debounce delay has passed 
      detachInterrupt(1);               
      timeOldInt = timeCurInt; 
      bounce = 1;
      attachInterrupt(1, rpmTrigger, RISING);
  }

  if (timeCur - timeOldRPM > RPMupdateRate){
      detachInterrupt(1);
      timeOldRPM = timeCur;
      Serial.print(RPMcount);
      RPMcount = 0;
      attachInterrupt(1, rpmTrigger, RISING);
  }

  if (timeCur - period > displayUpdateRate){
    sevseg.setNumber(25, 0);           
    sevseg.refreshDisplay();
    period = timeCur;
  }
}

The problem lies with this line here:

sevseg.refreshDisplay();

For some reason calling this completely screws up interrupts. For example if I comment this one line out and look at the serial print of (RPMcount) I get the correct result, that is If I input say 1 hertz with my function generator I get a result of 1 from RPMcount (RPM count is reset to 0 after this, basically im looking at interrupts received per second).
However as soon as I put this line in my program I get strange results from RPMcount like 60 even if I'm only putting in a 1 Hz signal. So somehow this line is generating spurious interrupts or its modifying this variable, both of which make no sense. Its also worth mentioning this has nothing to do with debouncing, as you can see there is a software method for debouncing interrupts and when I comment out the sevseg.refreshDisplay(); the code works perfectly well past 5 khz with +- 10 hz accuracy, so its certainly not a bouncing problem.

This really has me stumped.

Also here is the sevseg library in question: GitHub - DeanIsMe/SevSeg: Seven segment display controller library for Arduino

      detachInterrupt(1);               
      timeOldInt = timeCurInt; 
      bounce = 1;
      attachInterrupt(1, rpmTrigger, RISING);

Don't do that. Disable all interrupts (noInterruupts()) and re-enable them (I'm sure you can guess what the function is to do that).

The refreshDisplay() method uses delayMicroseconds() so you can see the segments (according to the function). That WILL interfere with your interrupts, especially since you detach and reattach them so often.