Re: [exim] Bug#360696: Bug#360696: Failed to get write lock …

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Michel Meyers
CC: exim-users, 360696-quiet, Andreas Metzler
Subject: Re: [exim] Bug#360696: Bug#360696: Failed to get write lock for /var/spool/exim4/db/retry.lockfile:timedout
On Fri, 28 Apr 2006, Michel Meyers wrote:

> I installed the package that Andreas supplied:
> http://downhill.aus.cc/debian/misc/exim4-daemon-heavy_4.61-1.0.0.debug_i386.deb
> (md5: 1adecd15e58afe4f06d35b41bbda8871)
>
> The binary should be in there as well. (you can extract it with ar if
> you don't have Debian)


Aha! I don't have Debian (I run Gentoo), but I did manage to extract it
like that, and now there is some useful information:

(gdb) where
#0  0xffffe410 in ?? ()
#1  0xbfd18ce8 in ?? ()
#2  0xb7ab6ff4 in ?? ()
#3  0xbfd18d0c in ?? ()
#4  0xb7a44313 in ?? ()
#5  0xb7e78cb0 in ?? () from /usr/lib/libdb-4.2.so
#6  0xbfd18d78 in ?? ()
#7  0xb7e5ffb2 in __memp_set_ftype_4002 () from /usr/lib/libdb-4.2.so
#8  0xb7e5ffb2 in __memp_set_ftype_4002 () from /usr/lib/libdb-4.2.so
#9  0xb7e459ce in __dbenv_set_flags_4002 () from /usr/lib/libdb-4.2.so
#10 0xb7e2cfff in __db_c_put_4002 () from /usr/lib/libdb-4.2.so
#11 0xb7e28990 in __db_pg_free_read_4002 () from /usr/lib/libdb-4.2.so
#12 0x080616b2 in dbfn_open (name=0x80f1ad1 "retry", flags=2, 
    dbblock=0x812d498, lof=1) at dbfn.c:166
#13 0x0809da66 in retry_update (addr_defer=0x810bf18, addr_failed=0x810bf14, 
    addr_succeed=0x810bf04) at retry.c:599
#14 0x0806b61d in deliver_message (id=0x81244d5 "1FYpIF-0006Rh-NB", forced=0, 
    give_up=0) at deliver.c:6086
#15 0x0808fc8a in queue_run (start_id=0x0, stop_id=0x0, recurse=0)
    at queue.c:621
#16 0x08072c0e in main (argc=<value optimized out>, cargv=0xbfd59bc4)
    at exim.c:3878


If that backtrace is to be trusted, Exim's function dbfn_open() has
called the function __db_pg_free_read_4002() from the libdb library, and
somewhere in there is where things get stuck. Of course, Exim doesn't
call such a function by a name like that. It will be using the "open"
function pointer in the data structure it gets from db_create().

There have been several releases of libdb-4.2 (I'm running 4.2.52). I
wonder what you are running?

Anyway, this looks like something really horrid going on inside libdb. I
am not at all sure what we do now. Andreas?


-- 
Philip Hazel            University of Cambridge Computing Service
Get the Exim 4 book:    http://www.uit.co.uk/exim-book