Sleep Mode - Sleep & Wake - Something wrong

Hoy!

I have a little program where I can put the Arduino Mega 2560 to sleep by pressing a button.
Another button can wake it up. It works.
BUT only if I press the wake up button Once first, then I can sleep and wake as many times as I want.
But if i put it to sleep and not press the wake up button once, it cannot awake from sleep and I have
to do a hard reset. Seems like a little bug?

Anyone has a clue?

Posting the code below, sorry for some swedish text

// Testar lägga till olika energispar LBR's SLEEP MODE här
#include <avr/sleep.h>

int WakeUpPin = 19;           // KNAPP        ---        Väcker maskinen
int GoToSleepPin = 18;        // KNAPP        ---        Knapp som försätter MEGA i SLEEP MODE - Ext Int 3


// SLEEP MODE - Ligger under alla int's - Om tas bort blir det 'wakeUpNow' was not declared in this scope
void wakeUpNow() {  
 }  

// Ligger i Void Setupen
  pinMode(WakeUpPin, INPUT);                //Declarar denna som input     MEGA's  input är 19        Knapp       -        VÄCKER
  pinMode(GoToSleepPin, INPUT);          //Declarar denna som input     MEGA's  input är 18        Knapp       -        Sparar pos och försätter i SLEEP MODE

// ---- Ligger under Void Setup
// ---- SleepNow måste declareras, raden nedan gör detta, annars blir det 'sleepNow' was not declared in this scope
void sleepNow() {  
    attachInterrupt(19, wakeUpNow, LOW);           // NY rek. kod - use interrupt ? (pin ?) and run function
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);               // sleep mode is set here  
    sleep_enable();                                    // enables the sleep bit in the mcucr register  
    sleep_mode();                                      // here the device is actually put to sleep!!  
    attachInterrupt(19, wakeUpNow, HIGH);        // NY rek. kod - use interrupt ? (pin ?) and run function
    
    // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP  
    sleep_disable();         // first thing after waking from sleep: disable sleep...  
    detachInterrupt(19);      // disables interrupt 0 on pin 2 so the wakeUpNow code will not be executed during normal running time.  
}



  // Ligger i Void Loop
  // ------------------------------------------------------------------------------------------------------------------------******************************************
  // ------------------------------------------------------------------------------------------------------------------------******************************************
  // -------- Denna VÄCKER Arduinon från SLEEP MODE -------- PROBLEM = Väcker bara Arduino om WakeUp knappen tryckts en gång innan man sätter den i Sleep Mode (konstigt)

  {
    val = digitalRead(WakeUpPin);              // Knapp som väcker Arduino från Sleep Mode
    if (val == HIGH) {                         // Kollar om knappen är tryckt

// HÄR NEDANFÖR SKA KOD FÖR UPPVÄCKNING LIGGA

  // SLEEP MODE lägger till denna - Finns inte i gamla mallen
   pinMode(WakeUpPin, INPUT_PULLUP);       
   attachInterrupt(digitalPinToInterrupt(WakeUpPin), wakeUpNow, HIGH);
   
//    wakeUpNow();                                 // Väcker - Verkar inte behövas med raderna ovan i bruk
//    sleep_disable();                             // first thing after waking from sleep: disable sleep...  - Verkar inte behövas med raderna ovan i bruk
    detachInterrupt(19);                         // disables interrupt ? on pin ? so the wakeUpNow code will not be executed during normal running time.  

      delay(750);
      lcd.setCursor(0, 1);
      lcd.print("ARISE!");
      Serial.println("Waking up the machine");
      delay(750);
    }
  }




  // Ligger i Void Loop
  // ------------------------------------------------------------------------------------------------------------------------******************************************
  // ------------------------------------------------------------------------------------------------------------------------******************************************
  // -------- SPARAR POSITION OCH FÖRSÄTTER MEGA I SLEEP MODE --------

  {
    val = digitalRead(GoToSleepPin);           // Knapp som sparar position och går in i SLEEP MODE
    if (val == HIGH) {                         // Kollar om knappen är tryckt
      UserStopPulseCount4 = PulseCount;
      EEPROM.put(24, UserStopPulseCount4);     // Skriver PulseCount numret till minnet, adressen är 24
      EEPROM.put(28, UserStopPulseCount4 + 1); //
      lcd.setCursor(0, 1);                     // Dessa två rader skriver till LCD, 0, 1 ärrad 2 och 1, 0 vore rad 1
      lcd.print(PulseCount);
      delay(750);
      lcd.setCursor(0, 1);
      lcd.print("OffOn SLEEP");
      Serial.println("Saving Off to On position to memory and initiates SLEEP MODE Zzzz...");
      delay(750);
      lcd.clear();                              // Tömmer skärmen
      lcd.setCursor(1, 0);                      // Visar Goodbye... på första raden av LCD
      lcd.print("Goodbye...");                  // Sista meddelandet innan den stänger ner
      delay(750);                               // Väntar lite
      lcd.clear();                              // Tömmer skärmen

// SOV FUNKTION HÄRUNDER

    sleepNow();                                 // Aktiverar SLEEP MODE - Kommer behöva interrupt wake up för att vakna från detta


    }
  }

But if i put it to sleep and not press the wake up button once, it cannot awake from sleep

If you don't press the wake up button, why do you expect the Arduino to ever wake up?

Anyone has a clue?

Given that you failed to post a complete program, or even all of the necessary snippets, I'm going to say that the problem is in the parts of the code that you didn't post (or in your expectations).