"Guru Meditation Error"

Hello. Could you help me to know why I’ve got the “Guru Meditation Error” .
What my code does is sending/receiving data from an esp32 to a Phone using BLE. But when I run the program it says on the Serial monitor: Guru meditation error. Also, on the BLE Scanner App from the phone it says: “Timeout. Connecting fail from the peripheral”

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>
#define sendUUID "3274642b-7f55-4959-bb0d-500e304fdf6b"
#define SERVICE_UUID        "023cf3a8-d049-4ea7-aefb-c3c54d1879ba"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
 int txvalor = 0; //tx de transmitir m l m
 BLEServer* pServer = NULL;
 uint32_t value = 0;
 BLECharacteristic  *pSend;
BLECharacteristic* pCharacteristic = NULL;
bool deviceConnected = false;
bool oldDeviceConnected = false;
class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
  
    };

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};
 
  String readString;
class MyCallbacks: public BLECharacteristicCallbacks { //para conseguir el valor en string mandando del celular
    void onWrite(BLECharacteristic *pCharacteristic) {
      std::string rxvalue = pCharacteristic->getValue();

      if (rxvalue.length() > 0) {
        Serial.print("Respuesta: ");

       
        for (int i = 0; i < rxvalue.length(); i++)
          Serial.print(rxvalue[i]);
             Serial.println();
      }


      
    }
};

void setup() {
 
  Serial.begin(115200); 
  BLEDevice::init("yoESP32");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService(SERVICE_UUID);
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(
                                         CHARACTERISTIC_UUID,
                                        BLECharacteristic::PROPERTY_READ   |
                      BLECharacteristic::PROPERTY_WRITE  
                                       );
  pCharacteristic->setCallbacks(new MyCallbacks());
    pSend = pService->createCharacteristic(sendUUID, BLECharacteristic::PROPERTY_NOTIFY);
  pServer -> setCallbacks(new MyServerCallbacks());
 pCharacteristic -> addDescriptor(new BLE2902());
  pService->start();
  BLEAdvertising *pAdvertising = pServer->getAdvertising();
  pAdvertising->start();
 
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(false);
  pAdvertising->setMinPreferred(0x0);  // set value to 0x00 to not advertise this parameter
  BLEDevice::startAdvertising();

 
}

void loop() {
    if (deviceConnected) {
        pCharacteristic->setValue((uint8_t*)&value, 4);
        pCharacteristic->notify();
        value++;
        delay(3); // bluetooth stack will go into congestion, if too many packets are sent, in 6 hours test i was able to go as low as 3ms
  
    }
    // disconnecting
    if (!deviceConnected && oldDeviceConnected) {
        delay(500); // give the bluetooth stack the chance to get things ready
        pServer->startAdvertising(); // restart advertising
        Serial.println("start advertising");
        oldDeviceConnected = deviceConnected;
    }
    // connecting
    if (deviceConnected && !oldDeviceConnected) {
       

        oldDeviceConnected = deviceConnected;
    }
}