printf problem while multitasking

I am now trying to use stdio facilities in my application. I am using the serial.c demo file which implements a basic interrupt driven API.  I’ve implemented a semaphore to control access to the serial functions across multiple tasks. This works: static void task1( void *pv ) {     for(;;)     {                 vTaskDelay( 100 );         if( xSemaphoreTake( xSerialSemaphore, 10 )         {             printf("task1rn");             xSemaphoreGive( xSerialSemaphore );         } } static void task2( void *pv ) {     for(;;)     {                vTaskDelay( 200);         if( xSemaphoreTake( xSerialSemaphore, 10 )         {             printf("task2rn");             xSemaphoreGive( xSerialSemaphore );         } } But this does NOT: static void task1( void *pv ) {     for(;;)     {                 vTaskDelay( 100 );         if( xSemaphoreTake( xSerialSemaphore, 10 )         {             printf("%crn", 0x31); //changed here             xSemaphoreGive( xSerialSemaphore );         } } static void task2( void *pv ) {     for(;;)     {                vTaskDelay( 200);         if( xSemaphoreTake( xSerialSemaphore, 10 )         {             printf("task2rn");             xSemaphoreGive( xSerialSemaphore );         } } Any suggestions / thoughts? --Scott

printf problem while multitasking

printf can take a looooot of stack, especially if using gcc.  Can you confirm that this is not just overflowing the stack. I have also seen implementation where printf was not reentrant.  I think this was mplab C18 compiler. Dave.

printf problem while multitasking

Thanks, that appeared to fix the issue…  I just increased the stack size. --Scott