> From: Sabino Colonna <sabinocolonna@virgilio.it>
> To: boost-users@lists.boost.org
> Date: 05/06/2016 12:50 PM
> Subject: [Boost-users] Boost ASIO steady_timer and date change
> Sent by: "Boost-users" <boost-users-bounces@lists.boost.org>
>
> Hello,
>
> I'm using a steady_timer to perform an asynchronous wait in the
> following manner:
>
> boost::asio::io_service io_service;
> boost::asio::steady_timer my_timer(io_service);
>
> void onTimeout(const boost::system::error_code& e)
> {
>     // Print something
> }
>
> ...
> my_timer.expires_from_now(std::chrono::seconds(600));
> my_timer.async_wait(onTimeout);
> io_service.run();
>
> If system 'date' does not change, everything is ok. But if I change
> 'date' by hand while the timer is running, it expires before 600
> seconds (more or less after 5 minutes) and 'onTimeout' is called.
> With synchronous wait, all is ok.
> According to documentation, steady_timer should not be affected by
> time change.
> Which may be the problem?


I had some weird issues with the steady timer a while back. I did a little digging and found that the steady timer can silently be replaced by the normal system timer in the standard library. I used BOOST_ASIO_DISABLE_STD_CHRONO to disable this "functionality". I have no clue what the standard library was thinking.