Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

Failed to allocate OT message error when publish interval is low.

Hello, 

We have a product developed using nRF5 SDK for Thread v4.1 based on mqtt-sn sleepy publisher example. 

Currently I want to publish my sensor data of payload size less than 100 bytes, at an upload interval of 100ms. I am using a hardware timer for generating timeout and in the timeout callback function I am reading sensor data and publishing it using mqtt-sn publish function.

Now this work fine for few minutes but after that certain interval it start giving error of "Failed to allocate OT Memory",  which arrives if otUDPNewMessage fails. I have already allocated 400 number of block of size (128 bytes) in memory manager. 

Still it gives me same issue after few minutes. So can anyone please help me out how can I solve this issue. 

Note:

I have nearly 100kB of RAM left currently and I want to stream sensor data continuously over 100 ms interval.  The parent poll time is set to 10ms and the interrupt priority of timers is 6. 

Looking for quick response. 

  • Hi Brain,
    Sounds like your problem is related to the usage of memory. I am not sure how you manage this on your codes, just have two suspections:

    1) Your codes may not properly free memory, see How do I free memory in C? - Stack Overflow

    2) I think the 100ms message interval is even challenging for a WiFi network, but the OT network is much slower than the WiFi network due to the device's hardware restriction, so the message will allocate more and more memory in the queue before sending them out. You can find a more detailed explanation from the thread group. 

    Best regards,

    Charlie

  • 1) Your codes may not properly free memory, see How do I free memory in C? - Stack Overflow

    I am not using dynamic memory allocation in my application code (nrf_malloc,nrf_free, nrf_realloc). But nrf drivers are using the same for maintaining a copy of the message during the transmission process (for retransmission's). 

  • Hello,

    First of all the answer isn't satisfying to me because we only have one device transmitting at a time with time interval of 100ms.  So it should work fine if i don't have any other nodes in network. 

    Also i am not using any sort of dynamic memory allocation functions like (malloc, nrf_malloc etc) so there is no point of freeing memory which i haven't allocated. The memory allocation function are only called using nrf_malloc in  mQTTSN drivers given by Nordic.

    Here are the logs:

    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (4)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (4)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (7)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (9)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (5)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    Logs dropped (17)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (8)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (19)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (10)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (9)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (12)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (21)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (30)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (11)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (3)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (9)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (21)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (19)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (28)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Logs dropped (5)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (13)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (6)
    
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    Logs dropped (3)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (16)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (12)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (21)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (15)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (23)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Logs dropped (5)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (4)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (6)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (15)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (11)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (29)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (20)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    Logs dropped (12)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Logs dropped (5)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (4)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (18)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (14)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (7)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (40)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (7)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    Logs dropped (12)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    <error> app: Failed to publish data
    
    
    
    Failed to publish data: 4
    Logs dropped (19)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (4)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (1)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (20)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (4)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (7)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (7)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (16)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    Logs dropped (7)
    
    <error> app: Retransmission attempt failed. Error code: 0x4
    
    
    
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    <info> app: MQTT-SN event: Retransmission retries limit has been reached.
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    Logs dropped (2)
    
    <error> app: Failed to allocate OT message
    
    
    
    Failed to publish data: 4
    

    So i need help urgently. Please help.

Related