Skip to content

Sometimes crashes occur after calling deinit(false) #803

Open
@pikkaru

Description

@pikkaru

I found this phenomenon when I was testing with version 1.4.2 at first, but the same phenomenon seems to occur when I test with 2.1.0 with modified code to be able to compile in that
environment. I use ESP32 Dev Module and Arduino Core for ESP32 v2.0.15.

Here is the part of my code(The ~ part omits code that is irrelevant to the BLE process):

          ~~~~~~~~~~~
          NimBLEDevice::init(ble_name);
          ~~~~~~~~~~~
          pStartupConfigServer = NimBLEDevice::createServer();
          pStartupConfigServer->setCallbacks(new ConfigServerCallbacks());
          NimBLEService *pService = pStartupConfigServer->createService(CONFIGSERVICE_UUID);
          pTxconfigCharacteristic = pService->createCharacteristic(
                        CONFIGCHARACTERISTIC_UUID_TX,
                        NIMBLE_PROPERTY::NOTIFY
                      );
          NimBLECharacteristic * pRxconfigCharacteristic = pService->createCharacteristic(
                        CONFIGCHARACTERISTIC_UUID_RX,
                        NIMBLE_PROPERTY::WRITE
                      );
          pRxconfigCharacteristic->setCallbacks(new ConfigChrCallbacks());
          pService->start();
          pConfigServer->getAdvertising()->start();
          bool ble_conf_test_flag = true;
          while (ble_conf_test_flag == true){
            if (Serial.available()>0){
              uart_command = Serial.readStringUntil('\n');
              if (uart_command == "exit"){
                ble_conf_test_flag = false;
              }
            }
            if (deviceConnected && !oldDeviceConnected) {
                oldDeviceConnected = deviceConnected;
            }
            delay(10);
          }
          pConfigServer->getAdvertising()->stop();
          NimBLEDevice::deinit(false);
          ~~~~~~~~~~~
        }

and this is the error message:

18:15:41.475 -> Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.
18:15:41.475 -> 
18:15:41.475 -> Core  0 register dump:
18:15:41.475 -> PC      : 0x00000000  PS      : 0x00060230  A0      : 0x8009996b  A1      : 0x3ffd3c80  
18:15:41.475 -> A2      : 0x3ffdff64  A3      : 0x00000001  A4      : 0x00000001  A5      : 0x0000abb5  
18:15:41.521 -> A6      : 0x00000000  A7      : 0x00000001  A8      : 0x800f80bc  A9      : 0x3ffd3c60  
18:15:41.521 -> A10     : 0x3ffc87f0  A11     : 0x3ffc87f0  A12     : 0x3ffca5b8  A13     : 0x00060223  
18:15:41.521 -> A14     : 0x00060220  A15     : 0x00000001  SAR     : 0x00000013  EXCCAUSE: 0x00000014  
18:15:41.521 -> EXCVADDR: 0x00000000  LBEG    : 0x400924f8  LEND    : 0x4009250e  LCOUNT  : 0x00000000  
18:15:41.521 -> 
18:15:41.521 -> 
18:15:41.521 -> Backtrace: 0xfffffffd:0x3ffd3c80 0x40099968:0x3ffd3ca0
18:15:41.521 -> 
18:15:41.521 -> 
18:15:41.521 -> 
18:15:41.521 -> 
18:15:41.521 -> ELF file SHA256: 66693fbd39183016
18:15:41.521 -> 
18:15:41.848 -> Rebooting...
18:15:41.848 -> ets Jul 29 2019 12:21:46
18:15:41.848 -> 
18:15:41.848 -> rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
18:15:41.848 -> configsip: 0, SPIWP:0xee
18:15:41.848 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
18:15:41.848 -> mode:DIO, clock div:1
18:15:41.848 -> load:0x3fff0030,len:1344
18:15:41.848 -> load:0x40078000,len:13964
18:15:41.848 -> load:0x40080400,len:3600
18:15:41.848 -> entry 0x400805f0

I would like to add that I remember this happening very rarely in 1.4.1.
Calling the delay function between deinit and stop seems to alleviate the problem, but I cannot determine if this is the correct solution.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions