On 03/02/2012 10:00, Walter Saegesser wrote: > I encounter a severe problem with the memory manager (mem.c, > MEM_USE_POOLS not set, LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT not set). > > My buffer is approx 40kB. An SSL connection to a server on the internet > does a big amount of allocations/deallocations (mostly small blocks). > For receiving data from the server I need 1kB blocks. > > It all works fine until all of a sudden the manager is no longer able to > get a 1kB block and the ‘err’ counter of the mem-stats is counted up > (every 100ms for about 15s until the system is reset by the watchdog). > > > > In the debugger I have a real-time monitoring of the used ram > (lwip_stats.mem.used). The value goes up and down, as expected, > definitively no accumulation. The high-water-mark is at least 10kB below > the heap size. > > The system is multitasking. The task trying to get the 1kB block sleeps > for a while if it fails, thus enabling other tasks to run and possibly > free memory. However, the error is not recoverable and the system crashes. > > If the systems runs into this situation (one task trying in vain to get > a 1kB block), you can see the ‘used’ value go down to about 22kB, i.e. > almost 18kB are free. > > > > The problem arises always at almost the same amount of data received > from the server, so I think it’s a systematic problem and not just > accidental. > > Could this be a bug or what else could be wrong?
If MEM_USE_POOLS is not set could this simply be memory fragmentation? Regards, Richard. + http://www.FreeRTOS.org Designed for Microcontrollers. More than 7000 downloads per month. _______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
