Hi Daixiwen,
Well I am glad that you gave me a response :).
The external VIC is indeed not too well documented. There are some example projects such as AN595 but when it comes to the interresting parts like preemption then you will end up alone in the dark wood.
Therefore I hoped to find any guru here to help me to get out of that nasty dark wood.
Unfortunately I needed the external VIC because I have a piece of hardware implemented which generates interrupts at an interval of 524us and the interrupt routine may not be delayed too much by another task such as the complete ethernet stuff which is also running. I experienced that issues when using the IIC which uses the round robin scheduling in software.
With the VIC I can make the time critical IRQ non maskable.
Anyway. With respect to the two printf() implementations as shown above I suspect the malloc() and free() functions to cause the buggy behaviour. I don't know why but these are the main differences between the two implementations.