rtems 4.6.0pre5: memory leak after deleting a task used printf
Valery Pykhtin
pykhtin at prosoft.ural.ru
Tue Oct 19 10:35:43 UTC 2004
Hi all,
It seems there is a memory leak when deleting a task used printf.
I created the test:
1. Calculating the amount of free/used blocks in c heap using
_Heap_Get_information.
2. Starting new task
3. Task does printf and selfdeletes
4. Calculating the amount of free/used blocks in c heap using
_Heap_Get_information.
5. Comparing values before starting a task with values after.
6. Goto point 1
After each iteration the number of used blocks is continously increasing. To
catch the bandit I created memory allocation tracer wich logs every
_Heap_Allocate and _Heap_Free and (log include stack traces for each
allocation) and marks those blocks that were not freed.
The stack trace of the bandit:
#0 __wrap__Heap_Allocate
#1 _Region_Allocate_segment
#2 rtems_region_get_segment
#3 malloc
#4 _malloc_r
#5 __smakebuf at newlib/libc/stdio/makebuf.c:81
#6 __swsetup at newlib/libc/stdio/wsetup.c:63
#7 _vfprintf_r at newlib/libc/stdio/vfprintf.c:519
#8 vfprintf at newlib/libc/stdio/vfprintf.c:367
#9 printf at newlib/libc/stdio/printf.c:62
#10 TestTask
where TestTask is my test task, __wrap__Heap_Allocate - _Heap_Allocate
wrapper.
I can send the test I've used, it contains the memory allocation tracer and
completly ready to run under debugger. My BSP is pc586. Note that the test
uses builtin GCC functions __builtin_frame_address and
__builtin_return_address.
Tommorow I'm going to repeat the test with RTEMS 4.6.2
Valery
More information about the users
mailing list