nrf_cloud_coap_connect() possible memory leak

Hello

I am using a custom board, based on nRF9160. I'm using SDK 2.7.0 and modem firmware 1.3.6.
After a bug in production where a device stopped sending data, I tracked down the issue to this function nrf_cloud_coap_connect().
In my specific case, after 55 successful calls, the function ends up returning -12 (ENOMEM 12    /* Not enough space */).
Any call after that returns the same error.

I guess the number of call depends on the firmware. Compiler states that my project uses ~33% of the available RAM, or 70kB.

The issue was seen a few times in production (deplyed devices) and I managed to reproduce with the following piece of code :

// General init

// Connect to LTE-M network

for(i=0;i<100;i++)
{    
    DEBUG_PRINT("Attempt %d\r\n", i);
    
    // Ensure there is no remaining stuff opened
    nrf_cloud_coap_disconnect() ;

    // Create new connexion
    err = nrf_cloud_coap_connect(NULL) ;
}


This not due a network issue, as coverage is good in my office, and the issue is fully repeatable.

In step by step debug, the error pops up in nrf_cloud_coap_transport.c
At line 319, nrf_cloud_coap_connect() calls nrf_cloud_coap_transport_authenticate(), which errors (-1) at line 805.

Is this a known issue ? How can I solve this ?
I was expecting that calling nrf_cloud_coap_disconnect() was enough to close any opened thread/variable/wathever, but it seems something is eating the memory at every iteration.

Thanks




Parents Reply Children
No Data
Related