vPrintTaskList bug?

hlachmann wrote on Monday, August 20, 2007:


I want to print all current tasks with vPrintTaskList(). Everything runs fine with one exception: The taskname of the task starting before the scheduler has started, is not shown correctly.

Following scenario:
1) created task before scheduler (task name "VS", task number 0)
2) started scheduler, IDLE task is created (task number 1)
3) created new task (task name "TWI", task number 2) with task 0
4) executed vPrintTaskList in task0
-> all task names are shown correctly except the task name "VS". Instead "VS" "2" is printed. Is this phenomenon known and does anybody know a solution?

I use an AVR ATMega32 with GCC4.2.1


rtel wrote on Monday, August 20, 2007:

This is most likely a stack overflow problem - I have seen something very similar before.  vPrintTaskList uses sprintf() which can use an awful lot of stack, especially when using GCC.  On the AVR you are not going to have much RAM available in order to increase the stack sizes too much so I would suggest providing your own cut down version of sprintf() (or whatever other library functions it uses).

Take a look at the LM3S6965 GCC demo which uses a small snprintf() implementation to get around the same problem.