[Exim] Exim 2.12 crashes when getting rid of LRU cached look…

Kezdőlap
Üzenet törlése
Válasz az üzenetre
Szerző: Harald Meland
Dátum:  
Címzett: exim-users
Tárgy: [Exim] Exim 2.12 crashes when getting rid of LRU cached lookup file
Hi, I'm experiencing Exim 2.12 crashes on Solaris 2.5.1.

The crashes appear to be related to `lookup_open_max' and the "close
least recently used lookup file" mechanism. Is this a known problem
with 2.12, already fixed in some more recent version (I couldn't find
anything by glancing at the ChangeLog)?

[ I know, 2.12 is getting old, but as I'm pretty swamped with other
stuff right now, I'd rather prefer it if I could put off creating
the infrastructure we'd need to upgrade to 3.x for just a little
while more... ]


To illustrate the problem, here's the output of a -bh session with
lookup_open_max set to (the ridiculously low value of) 2:


pat$ exim -C exim.conf.debug -bP lookup_open_max
lookup_open_max = 2
pat$ exim -d9 -C exim.conf.debug -bh 127.0.0.1
Exim version 2.12 debug level 9 uid=29578 gid=330
probably ndbm
Removed setuid privilege: uid=29578 gid=330 euid=29578 egid=330
sender address = hmeland@???
sender_fullhost = [127.0.0.1]
sender_rcvhost = [127.0.0.1]

**** SMTP testing session as if from host 127.0.0.1
**** Not for real!

checking host in helo_verify_nets?
anchor=0 list=0.0.0.0/0
verify_setup_netlist called
host in helo_verify_nets? yes
looking up host name for 127.0.0.1
IP address lookup yielded localhost
Actual local interface address is 127.0.0.1
Actual local interface address is 129.240.130.16
local host found for non-MX address
localhost 127.0.0.1 -1
sender_fullhost = localhost [127.0.0.1]
sender_rcvhost = localhost ([127.0.0.1])
set_process_info: 25045 2.12 handling incoming connection from localhost [127.0.0.1]
sender_{host,net}_accept are unset
checking host in sender_net_reject_except?
anchor=0 list=NULL
host in sender_net_reject_except? no (option unset)
checking host in sender_host_reject_except?
anchor=0 list=NULL
host in sender_host_reject_except? no (option unset)
checking host in sender_host_reject?
anchor=0 list=NULL
host in sender_host_reject? no (option unset)
checking host in sender_net_reject?
anchor=0 list=NULL
host in sender_net_reject? no (option unset)
checking host in sender_host_reject_recipients?
anchor=0 list=NULL
host in sender_host_reject_recipients? no (option unset)
checking host in sender_net_reject_recipients?
anchor=0 list=NULL
host in sender_net_reject_recipients? no (option unset)
checking host in rbl_except_nets?
anchor=0 list=NULL
host in rbl_except_nets? no (option unset)
checking RBL domain rbl.maps.vix.com
DNS lookup of 1.0.0.127.rbl.maps.vix.com (A) gave HOST_NOT_FOUND
RBL lookup for 1.0.0.127.rbl.maps.vix.com failed
=> that means it's not black listed at rbl.maps.vix.com
checking RBL domain dul.maps.vix.com
DNS lookup of 1.0.0.127.dul.maps.vix.com (A) gave HOST_NOT_FOUND
RBL lookup for 1.0.0.127.dul.maps.vix.com failed
=> that means it's not black listed at dul.maps.vix.com
checking host in sender_unqualified_hosts?
anchor=0 list=NULL
host in sender_unqualified_hosts? no (option unset)
checking host in sender_unqualified_nets?
anchor=0 list=129.240.0.0/16:128.39.3.180/32:127.0.0.1/32:0.0.0.0/32
verify_setup_netlist called
host in sender_unqualified_nets? yes
checking host in receiver_unqualified_hosts?
anchor=0 list=NULL
host in receiver_unqualified_hosts? no (option unset)
checking host in receiver_unqualified_nets?
anchor=0 list=129.240.0.0/16:128.39.3.180/32:127.0.0.1/32:0.0.0.0/32
verify_setup_netlist called
host in receiver_unqualified_nets? yes
checking host in helo_accept_junk_hosts?
anchor=0 list=NULL
host in helo_accept_junk_hosts? no (option unset)
checking host in helo_accept_junk_nets?
anchor=0 list=NULL
host in helo_accept_junk_nets? no (option unset)
LOG: 4 MAIN
SMTP connection from localhost [127.0.0.1]
220 pat.uio.no ESMTP Exim 2.12 #6 Wed, 17 Nov 1999 00:39:04 +0100
220 pat.uio.no ESMTP Exim 2.12 #6 Wed, 17 Nov 1999 00:39:04 +0100
smtp_setup_msg entered
EHLO localhost
SMTP<< EHLO localhost
sender_fullhost = localhost [127.0.0.1]
sender_rcvhost = localhost ([127.0.0.1])
set_process_info: 25045 2.12 handling incoming connection from localhost [127.0.0.1]
250-pat.uio.no Hello localhost [127.0.0.1]
250-SIZE 20971520
250-EXPN
250-PIPELINING
250 HELP
250-pat.uio.no Hello localhost [127.0.0.1]
250-SIZE 20971520
250-EXPN
250-PIPELINING
250 HELP
MAIL FROM:<harald.meland@???>
SMTP<< MAIL FROM:<harald.meland@???>
search_open: lsearch "/local/share/exim/spam_senders"
search_find: file="/local/share/exim/spam_senders"
key="usit.uio.no" partial=-1
LRU list:
5/local/share/exim/spam_senders
End
internal_search_find: file="/local/share/exim/spam_senders"
type=lsearch key="usit.uio.no"
file lookup required for usit.uio.no
in /local/share/exim/spam_senders
lookup failed
checking host in sender_verify_except_hosts?
anchor=0 list=NULL
host in sender_verify_except_hosts? no (option unset)
checking host in sender_verify_except_nets?
anchor=0 list=NULL
host in sender_verify_except_nets? no (option unset)
verifying harald.meland@???
>>>>>>>>>>>>>>>>>>>>>>>>

Verifying harald.meland@???
search_open: cdb "/local/share/exim/cdb_tables/LOCAL_DOMAINS"
search_find: file="/local/share/exim/cdb_tables/LOCAL_DOMAINS"
key="usit.uio.no" partial=-1
LRU list:
0/local/share/exim/cdb_tables/LOCAL_DOMAINS
5/local/share/exim/spam_senders
End
internal_search_find: file="/local/share/exim/cdb_tables/LOCAL_DOMAINS"
type=cdb key="usit.uio.no"
file lookup required for usit.uio.no
in /local/share/exim/cdb_tables/LOCAL_DOMAINS
lookup yielded:
address harald.meland@???
local_part=harald.meland domain=usit.uio.no
domain is local
>>>>>>>>>>>>>>>>>>>>>>>>

directing harald.meland@???
calling host_to_uio_host director
search_open: cdb "/local/share/exim/cdb_tables/LOCAL_DOMAINS"
cached open
search_find: file="/local/share/exim/cdb_tables/LOCAL_DOMAINS"
key="usit.uio.no" partial=-1
LRU list:
0/local/share/exim/cdb_tables/LOCAL_DOMAINS
5/local/share/exim/spam_senders
End
internal_search_find: file="/local/share/exim/cdb_tables/LOCAL_DOMAINS"
type=cdb key="usit.uio.no"
cached data used for lookup of usit.uio.no
in /local/share/exim/cdb_tables/LOCAL_DOMAINS
lookup yielded:
host_to_uio_host director skipped: condition failure
calling set_correct_local_part_case director
set_correct_local_part_case director called for harald.meland@???
search_open: cdb "/local/share/exim/cdb_tables/ALL_USERS"
Too many lookup files open
closing 5/local/share/exim/spam_senders
Segmentation Fault
pat$


As I haven't gotten around to compiling an Exim binary with "-g" yet,
the coredumps I get look like this:

(gdb) where
#0 0xef5cc5a0 in _free_unlocked ()
#1 0xef5cc560 in free ()
#2 0x6f578 in cdb_close ()
#3 0x4c67c in search_open ()
#4 0x61f08 in aliasfile_director_entry ()
#5 0x2c018 in direct_address ()
#6 0x58ebc in verify_address ()
#7 0x51430 in smtp_setup_msg ()
#8 0x31774 in main ()

All my lookups but the one for ".../spam_senders" are of the cdb
persuasion... is Exim somehow getting confused and tries to call
cdb_close() on a file opened for a lsearch lookup?

The Exim config we're experiencing these problems with has been made
available at <URL: http://www.uio.no/~hmeland/tmp/pat.uio.no-exim.conf>.

Any help in solving this would be greatly appreciated,
--
Harald