Describe the bug
When pending on CFE_SB_ReceiveBuffer with a timeout on a POSIX system, a change to the system time causes the function to immediately return with a timeout error code or pend longer than specified depending on the direction of the time change.
To ReproduceCFE_SB_ReceiveBuffer with a timeout of 10 seconds on a Linux system. Change the system time ahead by 1 hour. The function will return immediately with code CFE_SB_TIME_OUT regardless of the actual elapsed time.
Expected behavior
The function should always wait for the specified timeout regardless of any change to the system time. If this is not practical, it would be helpful to document this behavior in the function doc string.
System observed on:
ARM Cortex A9
Linux
Versions Draco-RC5
Additional context
The implementation calls OSAL function OS_QueueGet. The POSIX implementation calls mq_timedreceive which is known to suffer from this problem.
Describe the bug When pending on
CFE_SB_ReceiveBuffer
with a timeout on a POSIX system, a change to the system time causes the function to immediately return with a timeout error code or pend longer than specified depending on the direction of the time change.To Reproduce
CFE_SB_ReceiveBuffer
with a timeout of 10 seconds on a Linux system. Change the system time ahead by 1 hour. The function will return immediately with code CFE_SB_TIME_OUT regardless of the actual elapsed time.Expected behavior The function should always wait for the specified timeout regardless of any change to the system time. If this is not practical, it would be helpful to document this behavior in the function doc string.
System observed on: ARM Cortex A9 Linux Versions Draco-RC5
Additional context The implementation calls OSAL function
OS_QueueGet
. The POSIX implementation callsmq_timedreceive
which is known to suffer from this problem.Reporter Info Andrew Hatstat, Geost