Re: [Exim] Exim segfaults in daemon mode (daemon.c seems to …

Top Page
Delete this message
Reply to this message
Author: Richard Gration
Date:  
To: Philip Hazel
CC: exim-users
Subject: Re: [Exim] Exim segfaults in daemon mode (daemon.c seems to be the problem)
Philip Hazel wrote:
> On Wed, 24 Sep 2003, Richard Gration wrote:

<SNIP>
> A test and a workaround is to try setting local_interfaces to a list of
> your IPs:
>
> local_interfaces = 127.0.0.1 : 192.168.x.y


I tried this, but exim still segfaults

<SNIP>
>>I'm about to try compiling 4.23 which I've compiled without problem in
>>the last month.
>
> Presumably it then worked?


Sorry, that was very ambiguous. I've compiled and run it successfully
_on another host_ (running RH 7.3). I've never had it running on the
machine it's segfaulting on (fortunately it works on production boxes at
work, the problem is on my desktop at home ;-)

I used strace (last bit of the output below) and it shows that the
segfault happens after the fork, just after libdb3.so.3 is read. Maybe
my initial suspicions were correct ...

All help gratefully received
Thank you
Rick


strace -f says
==============
.
.
.
read(3, "o\n  # messages that are addresse"..., 4096) = 4096
read(3, "\nbegin routers\n\n# This router ro"..., 4096) = 4096
read(3, "nnot_route_message = Unknown use"..., 4096) = 4086
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x40014000, 4096)                = 0
open("/etc/passwd", O_RDONLY)           = 3
fcntl64(3, F_GETFD)                     = 0
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=1164, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40014000
_llseek(3, 0, [0], SEEK_CUR)            = 0
read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1164
close(3)                                = 0
munmap(0x40014000, 4096)                = 0
brk(0x80d5000)                          = 0x80d5000
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
getppid()                               = 19492
fork()                                  = 19494
[pid 19493] _exit(0)                    = ?
setsid()                                = 19494
open("/etc/ld.so.cache", O_RDONLY)      = 0
fstat64(0, {st_mode=S_IFREG|0644, st_size=41905, ...}) = 0
old_mmap(NULL, 41905, PROT_READ, MAP_PRIVATE, 0, 0) = 0x40014000
close(0)                                = 0
open("/lib/libnss_db.so.2", O_RDONLY)   = 0
read(0, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\22"...,
1024) = 1024
fstat64(0, {st_mode=S_IFREG|0644, st_size=16944, ...}) = 0
old_mmap(NULL, 20336, PROT_READ|PROT_EXEC, MAP_PRIVATE, 0, 0) = 0x4020a000
mprotect(0x4020e000, 3952, PROT_NONE)   = 0
old_mmap(0x4020e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
0, 0x3000) = 0x4020e000
close(0)                                = 0
open("/lib/libnss_files.so.2", O_RDONLY) = 0
read(0, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\35\0\000"...,
1024) = 1024
fstat64(0, {st_mode=S_IFREG|0644, st_size=32668, ...}) = 0
old_mmap(NULL, 36112, PROT_READ|PROT_EXEC, MAP_PRIVATE, 0, 0) = 0x40220000
mprotect(0x40228000, 3344, PROT_NONE)   = 0
old_mmap(0x40228000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
0, 0x7000) = 0x40228000
close(0)                                = 0
open("/usr/lib/libdb3.so.3", O_RDONLY)  = 0
read(0, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\311\0"...,
1024) = 1024
fstat64(0, {st_mode=S_IFREG|0644, st_size=684092, ...}) = 0
old_mmap(NULL, 687628, PROT_READ|PROT_EXEC, MAP_PRIVATE, 0, 0) = 0x40229000
mprotect(0x402d0000, 3596, PROT_NONE)   = 0
old_mmap(0x402d0000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
0, 0xa6000) = 0x402d0000
close(0)                                = 0
munmap(0x40014000, 41905)               = 0
--- SIGSEGV (Segmentation fault) ---