lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] LWIP+ FreeRTOS stack crash: pbuf chain keeps increase, not


From: Amit Rahman
Subject: [lwip-users] LWIP+ FreeRTOS stack crash: pbuf chain keeps increase, not enough space for new header size
Date: Fri, 19 Apr 2024 19:23:19 -0400

Hi all,

I am working on a project using an STM32 Nucleo H563ZI board with lwIP and FreeRTOS, and I am facing some issues with the stability of the network stack.

After running for a certain period (around 2-3 minutes), the board seems to crash or freeze, and I am looking for guidance on how to troubleshoot and resolve this problem.


Here's a summary of my setup and findings:

  1. Development environment:
    • STM32 Nucleo H563ZI board
    • lwIP and FreeRTOS integration
    • Ethernet communication with a local router and computer
    • Static IP configuration, firewalls disabled
  2. Observations:
    • The board runs normally for about 2-3 minutes before crashing or freezing.
    • When sending ping requests from the computer, the board responds to about 30 pings before crashing, with an average round-trip time of 10.774 ms, Ethernet looptime of about 10ms
    • Without ping requests, the board sends out around 45 messages before crashing.
    • The crash seems to occur during packet processing or memory management.
  3. Debugging findings:
    • In the serial monitor, after the crash, I noticed the following message: "pbuf_add_header: failed as 0x2002d244 < 0x2002d260 (not enough space for new header size)"
    • The debugger call stack gets stuck in a specific function callstack where I suspect the assert fails.
    • image.png
    • Where the call stack is: 
tcip_try_callback (which is trying to call back pbuf_free_ooseq_callback)
pbuf_pool_is_empty
pbug_alloc
    • The pbuf length keeps increasing, as seen in the serial monitor logs: "ip4_input: p->len 84 p->tot_len 84" etc etc

    • Relevant code:
    • I have attached the relevant source files, including:
      • udp.c
      • ethernetif.c
      • lwipopts.h
      • lwipopts_freertos.h

My guess is that upon receipt in ARP probe response from my computer to the board and/or the repeated ping requests from my computer, the stack eventually runs out of memory, and the pbuf chain length keeps increasing, however the issue with deallocating pbufs somewhere its not apparent to me.


I suspect that there might be a misconfiguration in the lwIP setup or memory management, but I am unsure how to proceed with debugging and resolving the issue.

I would greatly appreciate any guidance or suggestions on the following: 

I had mostly based my code on the UDP echoserver example https://github.com/STMicroelectronics/stm32h5-classic-coremw-apps/blob/main/Projects/NUCLEO-H563ZI/Applications/LwIP/LwIP_UDP_Echo_Server/Core/Src/main.c

Unfortunately, I don't seem to see what I'm missing.

Thank you in advance for your assistance. I look forward to your insights and recommendations.

Attachment: udp.c
Description: Binary data

Attachment: ethernetif.c
Description: Binary data

Attachment: lwipopts.h
Description: Binary data

Attachment: lwipopts_freertos.h
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]