Strange Timer behavior on POSIX port

Hello!

I use FreeRTOS for a microcontroller device, and now want to simulate FreeRTOS on Ubuntu to run Ceedling tests.
Starting timer with a callback gives me either a lot of callbacks if timer period == 200 msec, or zero callbacks, if timer period == 2000 msec for a period of 5 seconds

static void test_timer_callback(TimerHandle_t xTimer) {
  printf("test_timer_callback \n"); 
}
...
test_timer = xTimerCreate("test_timer", pdMS_TO_TICKS(2000), pdTRUE, (void *)0,
                                    test_timer_callback);  //2000 - zero callbacks, 200 msec - a LOT of callbacks
                                    
xTimerStart(test_timer, pdMS_TO_TICKS(10));

Also, when I call xTimerStop function - the function contains xTimerStop fall without any errors

I use FreeRTOSConfig.h file from blinky example

#define configUSE_PREEMPTION                       1
#define configUSE_PORT_OPTIMISED_TASK_SELECTION    0
#define configUSE_IDLE_HOOK                        0
#define configUSE_TICK_HOOK                        0
#define configUSE_DAEMON_TASK_STARTUP_HOOK         0
#define configTICK_RATE_HZ                         ( 1000 )                  /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */
#define configMINIMAL_STACK_SIZE                   ( ( unsigned short ) 70 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */
#define configTOTAL_HEAP_SIZE                      ( ( size_t ) ( 65 * 1024 ) )
#define configMAX_TASK_NAME_LEN                    ( 12 )
#define configUSE_TRACE_FACILITY                   1
#define configUSE_16_BIT_TICKS                     0
#define configIDLE_SHOULD_YIELD                    1
#define configUSE_MUTEXES                          1
#define configCHECK_FOR_STACK_OVERFLOW             0
#define configUSE_RECURSIVE_MUTEXES                1
#define configQUEUE_REGISTRY_SIZE                  20
#define configUSE_APPLICATION_TASK_TAG             1
#define configUSE_COUNTING_SEMAPHORES              1
#define configUSE_ALTERNATIVE_API                  0
#define configUSE_QUEUE_SETS                       1
#define configUSE_TASK_NOTIFICATIONS               1
#define configSUPPORT_DYNAMIC_ALLOCATION           1

/* Software timer related configuration options.  The maximum possible task
 * priority is configMAX_PRIORITIES - 1.  The priority of the timer task is
 * deliberately set higher to ensure it is correctly capped back to
 * configMAX_PRIORITIES - 1. */
#define configUSE_TIMERS                           1
#define configTIMER_TASK_PRIORITY                  ( configMAX_PRIORITIES - 1 )
#define configTIMER_QUEUE_LENGTH                   20
#define configTIMER_TASK_STACK_DEPTH               ( configMINIMAL_STACK_SIZE * 2 )

Any ideas?

Hey,
I have tried the timers with both 200ms and 2000ms and they look fine to me.
I used the default config file from the posix port and also modified it to match the one you posted
the only difference is:

#define configUSE_IDLE_HOOK                        0
#define configUSE_TICK_HOOK                        0
#define configUSE_DAEMON_TASK_STARTUP_HOOK         0

With 2000 ms

[Posix_GCC]$ ./build/posix_demo   
               
Trace started.          
The trace will be dumped to disk if a call to configASSERT() fails.     
Starting echo blinky demo      
Message received from task        
Message received from task      
Message received from task    
Message received from task      
Message received from task        
Message received from task         
Message received from task           
Message received from task            
Message received from task   
test_timer_callback      
Message received from software timer     
Message received from task   
Message received from task   
Message received from task               
Message received from task   
Message received from task     
Message received from task   
Message received from task   
Message received from task 
Message received from task   
Message received from task   
test_timer_callback   
Message received from software timer    
Message received from task  
Message received from task      
Message received from task  
Message received from task   
Message received from task  
Message received from task   
Message received from task   
Message received from task   
Message received from task   
Message received from task  
test_timer_callback  
Message received from software timer  
Message received from task  
Message received from task 
Message received from task   
Message received from task   
Message received from task      
Message received from task                                                 
Message received from task    
Message received from task     
Message received from task           
Message received from task                                           
test_timer_callback
Message received from software timer 
Message received from task            
Message received from task     
Message received from task     
Message received from task                                 
Message received from task                                               
Message received from task     
Message received from task        
Message received from task
Message received from task
Message received from task
test_timer_callback       
Message received from software timer
Message received from task                                                      
Message received from task                        
Message received from task  
Message received from task
Message received from task    
Message received from task   
Message received from task               
Message received from task                                                      
Message received from task   
Message received from task
test_timer_callback 
Message received from software timer                 
Message received from task          
Message received from task
Message received from task         

With 200 ms

[Posix_GCC]$ ./build/posix_demo                                                    

Trace started.                                                                     
The trace will be dumped to disk if a call to configASSERT() fails.                
Starting echo blinky demo                                                          
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from software timer                                               
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from software timer                                               
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task                                                         
test_timer_callback                                                                
Message received from task

My guess is that you are doing something that is not shown in the fragment you have posted.

Alfred