Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CFE_SB_ReceiveBuffer times out immediately if the system time changes on POSIX #2574

Open
ahatstat opened this issue Jul 3, 2024 · 1 comment

Comments

@ahatstat
Copy link

ahatstat commented Jul 3, 2024

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 calls mq_timedreceive which is known to suffer from this problem.

Reporter Info
Andrew Hatstat, Geost

@irowebbn
Copy link
Contributor

Can confirm, I have experienced this same problem and came to the same conclusion as you. The mq API is simply not sufficient for working with multiple clocks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants