https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41861
Austin Beer <asbeer at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |asbeer at gmail dot com --- Comment #16 from Austin Beer <asbeer at gmail dot com> --- Back in 2017 I spent a lot of time (along with the maintainer) testing and fixing time-related QOI issues in the Boost.Thread library, which were included in Boost 1.67. The two main solutions we employed were: 1. We used chrono::steady_clock as the primary clock inside condition_variable. 2. When converting from another clock to chrono::steady_clock in *_until() functions, we polled the other clock periodically (i.e. every 100 milliseconds) in case the other clock had jumped. Here is the PR, the test code, and the final test results after fixing as much as we could. https://github.com/boostorg/thread/pull/142 https://github.com/austin-beer/test-time-jumps/blob/master/test_time_jumps.cpp https://github.com/austin-beer/test-time-jumps/blob/master/linux_results_develop1_default.txt I've also created a similar test for libstdc++ and uploaded those results. I tested against GCC 8.3.0. https://github.com/austin-beer/test-time-jumps/blob/master/test_time_jumps_libstdcxx.cpp https://github.com/austin-beer/test-time-jumps/blob/master/test_time_jumps_libstdcxx_results.txt So I support Mike Crowe's suggestion that std::condition_variable be changed to use std::chrono::steady_clock.