Q0602
Question
Exim keeps crashing with segmentation errors (signal 11 or 139) during delivery. This seems to happen when it is about to contact a remote host or when a delivery is deferred.
Answer
This could be a problem with Exim's databases. Try running a delivery with debugging turned on. If the last line of the debug output is something like this:
locked /var/spool/exim/db/retry.lockfile
the crash is happening inside the DBM library. Check that your DBM library is correctly installed. In particular, if you have installed a second DBM library onto a system that already had one, check that its version of ndbm.h is being seen first. For example, if the new version is in /usr/local/include, check that there isn't another version in /usr/include. If you are using Berkeley db, you can set
USE_DB=yes
in your Local/Makefile to avoid using ndbm.h altogether. This is particularly relevant for version 2 (or later) of Berkeley db, because no ndbm.h file is distributed with it. Another thing you can try is to run
exim_dumpdb /var/spool/exim retry
to see if it also crashes, or build the test_dbfn tool and fiddle around with it. If both fail, it is most almost certainly a problem with your DBM library. You could try to update it, or force Exim to use another library. See the file doc/dbm.discuss.txt for hints about this.
