I've done a little digging to try and find out what's causing our
problem with Exim's hanging around for ages and clogging up the whole
CPU (FWIW: Ultra-1, Solaris 2.5.1, gcc 2.7.2). For instance, just now
"top" reports ...
1935 sysquota -15 0 2440K 1480K run 7:17 61.81% 61.75% exim
I rebuilt Exim with debugging turned on and optimisation turned off,
and discovered that it always seems to wedge in the same place (see
below). I'm a bit nervous about fiddling with this without advice
from the experts. Any thoughts ?
Cheerio,
Martin
PS That rewrite rule in Exim's config is
*@*.lboro.ac.uk \
${lookup{$1}lsearch{/usr/local/exim/mappings/rewrites}{$value}fail} \
hE
and in /usr/local/exim/mappings/rewrites, we have: (wrapped)
phil.colbourne: "/I=P/G=Phill/S=Colbourne/OU=IT Applications/O=National
Power plc/PRMD=NP/ADMD=BT/C=GB/"@mhs-relay.ac.uk
michael: M.Lawrie@???
dave.oneill: "Dave.O'Neill"@???
vaughan-shell: "/S=Vaughan/I=AB/C=NL/ADMD=400NET/PRMD=Shell/O=SIEP The
Hague/OU1=EPM-EG/OU2=OPENMAIL/"@mhs-relay.ac.uk
sun-cc201# gdb /usr/local/exim/bin/exim 4097
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (sparc-sun-solaris2.5.1),
Copyright 1996 Free Software Foundation, Inc...
/var/tmp/exim-1.59/build-SunOS5-sparc/4097: No such file or directory.
Attaching to program `/usr/local/exim/bin/exim', process 4097
Reading symbols from /usr/lib/libsocket.so.1...done.
Reading symbols from /usr/lib/libnsl.so.1...done.
Reading symbols from /usr/lib/libkstat.so.1...done.
Reading symbols from /usr/lib/libresolv.so.2...done.
Reading symbols from /usr/lib/libc.so.1...done.
Reading symbols from /usr/lib/libdl.so.1...done.
Reading symbols from /usr/lib/libintl.so.1...done.
Reading symbols from /usr/lib/libmp.so.1...done.
Reading symbols from /usr/lib/libw.so.1...done.
Reading symbols from /usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1...done.
Reading symbols from /usr/lib/nss_files.so.1...done.
Reading symbols from /usr/lib/nss_dns.so.1...done.
0x577bc in tree_search (p=0x92c80,
name=0xefffe560 "0/usr/local/exim/mappings/rewrites") at tree.c:383
Source file is more recent than executable.
383 if (c == 0) return p;
(gdb) where
#0 0x577bc in tree_search (p=0x92c80,
name=0xefffe560 "0/usr/local/exim/mappings/rewrites") at tree.c:383
#1 0x4dee0 in search_open (
filename=0x92d60 "/usr/local/exim/mappings/rewrites", search_type=48,
modemask=0, owners=0x0, owngroups=0x0, message=0x8e008) at search.c:214
#2 0x30c34 in expand_string_internal (
string=0xf7ca0 "${lookup{$1}lsearch{/
e}fail}", ket_ends=0, left=0x0, skipping=0) at expand.c:963
#3 0x319f0 in expand_string (
string=0xf7ca0
"${lookup{$1}lsearch{/usr/local/exim/mappings/rewrites}{$value}fail}")
at expand.c:1199
#4 0x4bc84 in rewrite_one (s=0xf74c8 "eljec@???",
flag=128, add_header=1, name=0x733b0 "recipient") at rewrite.c:196
#5 0x4bff0 in rewrite_address (s=0xf74c8 "eljec@???",
is_recipient=1, add_header=1) at rewrite.c:311
#6 0x3fd78 in parse_extract_addresses (
s=0xf7428 "eljec@???", anchor=0xefffed10,
error=0xefffecfc, optional=0, allow_blackhole=1, directory=0x0)
at parse.c:1222
#7 0x5c1b8 in aliasfile_director_entry (dblock=0xf6038, addr=0x92ab8,
addr_local=0xefffee74, addr_remote=0xefffee78, addr_new=0xefffee7c,
addr_succeed=0xefffee70, verify=1) at aliasfile.c:368
#8 0x2809c in direct_address (addr=0x92ab8, addr_local=0xefffee74,
addr_remote=0xefffee78, addr_new=0xefffee7c, addr_succeed=0xefffee70,
verify=1) at direct.c:561
#9 0x5804c in verify_address (s=0x94288 "j.e.cooling@???",
is_recipient=0, local=0, f=0x0, local_domain=0x8d93c,
newaddress=0xeffff224, log_details=0, address_test=0) at verify.c:192
#10 0x596cc in verify_sender_preliminary (errcode=0xeffff2cc,
errmess=0xeffff2e4) at verify.c:761
#11 0x51198 in smtp_setup_msg (fin=0x8df08, fout=0x8def8, first=0)
at smtp_in.c:947
#12 0x1c240 in handle_smtp_call (listen_socket=2, accept_socket=3,
accepted=0xeffff4b0) at daemon.c:309
#13 0x1d9ec in daemon_go () at daemon.c:889
#14 0x2d0f4 in main (argc=3, argv=0xeffff9ec) at exim.c:1570
(gdb) list
378 tree_search(tree_node *p, char *name)
379 {
380 while (p != NULL)
381 {
382 int c = strcmp(name, p->name);
383 if (c == 0) return p;
384 p = (c < 0)? p->left : p->right;
385 }
386 return NULL;
387 }
(gdb) print name
$1 = 0xefffe560 "0/usr/local/exim/mappings/rewrites"
(gdb) print p->name
$2 = ""
(gdb) print p
$3 = (tree_node *) 0x92c80
(gdb) print p->left
$4 = (tree_node *) 0x92cd0
(gdb) print p->right
$5 = (tree_node *) 0x923a0