Control: tags -1 + upstream Control: forwarded -1 https://dovecot.org/mailman3/archives/list/[email protected]/thread/HGMZZFEKSNCVHRGO5UPXM2GQTMUYSAOO/
On Fri, Jan 02, 2026 at 05:57:34PM +0100, Andy Spiegl wrote: > > The function io_loop_get_wait_time in ioloop.c contains the line: > > ioloop->next_max_time.tv_sec = (1ULL << (TIME_T_MAX_BITS-1)) - 1; > > On 32-bit systems TIME_T_MAX_BITS is 31 such that the result of this > calculation is 1073741823. Far from the intended "infinity" and even before > "now". This leads to problems in the function io_loop_handle_timeouts_real: > the calculation of the time difference between now and next_max_time is then > something like -693628953 seconds which confuses dovecot and floods the logs > with these warnings: > > Jan 02 17:43:43 lmtp(38364): Warning: Time moved forward 693630400.301863 > seconds > Jan 02 17:43:43 lmtp(38364): Warning: Time moved forward 693630400.304144 > seconds > Jan 02 17:45:43 lmtp(38364): Warning: Time moved forward 693630520.416053 > seconds Note that this likely only impacts i386, which is the only architecture in Debian where time_t is still 32 bits. Other architectures, including other 32-bit architectures, have transitioned to a 64 bit time_t. For compatibility reasons, i386 will continue to use a 32 bit time_t. noah

