Bug#962847: exim4: takes forever to send a mail after sleeping

Michal Politowski mpol+debian at meep.pl
Mon Jun 22 06:40:31 BST 2020

Package: exim4
Version: 4.94-4
Followup-For: Bug #962847

gdb shows the wait happening in milliwait, called from exim_wait_tick:

0xf7faf169 in __kernel_vsyscall ()
#0  0xf7faf169 in __kernel_vsyscall ()
#1  0xf742fc44 in __GI___sigsuspend (set=0xffdc53ac) at ../sysdeps/unix/sysv/linux/sigsuspend.c:26
#2  0x565fc792 in milliwait (itval=0xffdc54fc) at exim.c:325
#3  0x565fdb93 in exim_wait_tick (tgt_tv=0x56743788 <message_id_tv>, resolution=500) at exim.c:485
#4  0x56637272 in receive_msg (extract_recip=<optimized out>) at receive.c:4323
#5  0x565e4e76 in handle_smtp_call (accepted=<optimized out>, accept_socket=<optimized out>, listen_socket_count=<optimized out>, listen_sockets=<optimized out>) at daemon.c:530
#6  daemon_go () at daemon.c:2414
#7  0x565d5de0 in main (argc=<optimized out>, cargv=<optimized out>) at exim.c:4805

I am pretty sure that the problem is caused by the commit 6906c131d1d07d07831f8fbabae6290a3cba6ca3
(Use a monotonic clock, if available, for ID generation).
The change contains measuring of the difference between CLOCK_MONOTONIC and realtime once
at startup (exim_clock_init), but as far as I understand CLOCK_MONOTONIC
on Linux does not increase during suspend/hibernate (possibly wrognly [1]),
so the difference grows then, unaccounted for.

[1]: https://stackoverflow.com/a/3527632/1236045

MichaƂ Politowski
Talking has been known to lead to communication if practiced carelessly.

More information about the Pkg-exim4-maintainers mailing list