[exim] Re: Exim 4.42 sleeping "forever"

Top Page
Delete this message
Reply to this message
Author: Alex Kiernan
Date:  
To: exim-users
Subject: [exim] Re: Exim 4.42 sleeping "forever"
On Thu, 30 Sep 2004 16:12:25 +0100, Alex Kiernan <alex.kiernan@???> wrote:
>
>
> We've seen this problem before on Solaris - a fix went in at some
> point (fix #5 in 4.22 I think), but I'm pretty sure we've seen it
> since on Solaris (9/Sparc) and we're now seeing it FreeBSD 4.8 w/ exim
> 4.42.
>
> Attaching gdb and dumping a bunch of stuff:
>
> (gdb) down
> #0 0x28367a48 in sigsuspend () from /usr/lib/libc.so.4
> (gdb) info locals
> No symbol table info available.
>
> (gdb) up
> #1  0x805b961 in milliwait (itval=0xbfbff010) at exim.c:214
> 214     in exim.c
> (gdb) info locals
> itval = (struct itimerval *) 0xbfbff010
> sigmask = {__bits = {4294959103, 4294967295, 4294967295, 4294967295}}
> old_sigmask = {__bits = {0, 0, 0, 0}}

>
> (gdb) up
> #2  0x805babf in exim_wait_tick (then_tv=0x80e4578, resolution=5000)
>     at exim.c:322
> 322     in exim.c
> (gdb) info locals
> itval = {it_interval = {tv_sec = 0, tv_usec = 0}, it_value = {tv_sec = 147,
>     tv_usec = -106474}}
> resolution = 5000
> now_tv = {tv_sec = 1096389257, tv_usec = 895000}
> now_true_usec = 896474

>


We (think) we understand... setitimer is supposed to return EINVAL for
non-canonical values
(http://www.unix.org/onlinepubs/009695399/functions/setitimer.html),
checking on Solaris 9 and FreeBSD 4.8, that is indeed the case (and
its *not* on Fedora Core 2), so we end up going to sleep forever,
having ignored the return from setitimer and end up waiting for an
event which will never happen.

--
Alex Kiernan