Title: #107: WATCHDOG: Avoid non async-signal-safe from the signal_handler
There are two scenarios:
1) timeshift during system boot -- it is very common to be several hours
2) timeshift due to an ntp update when booted up -- usually only few seconds, not a big
The problem with tevent timer is that if we shift backwards the timer remains too far in
the future. This applies to all timers, not only for the watchdog. Forward shift is not a
problem, it just executes the timers immediately. Resetting the watchdog helps in a way
that sssd is not killed, we don't have any capability to reschedule all timed event
and we actually can not tell that sssd will be functioning properly (dyndns, sudo refresh,
enumeration, domain refresh, even idle timer on socket activation)... all those operations
that depends on time() would become unreliable.
I think the best thing to do would be restart the process (although the question is how
would this affect the boot up) and patch tevent to deal with timeshift either by using
monotonic clock or by detecting them and altering timers accordingly.
See the full comment at https://github.com/SSSD/sssd/pull/107#issuecomment-266700933