Re: [Exim] 4.12 smtp transport segfaults, newbie begs for he…

Top Page
Delete this message
Reply to this message
Author: Greg Louis
Date:  
To: Exim Users
Subject: Re: [Exim] 4.12 smtp transport segfaults, newbie begs for help
On 20030128 (Tue) at 1014:55 +0000, Philip Hazel wrote:
> On Tue, 28 Jan 2003, Nico Erfurth wrote:
>
> > > http://www.bgl.nu/~glouis/exim.out
> >
> > Hmmm, strange, it crashed VERY early in the transport.
> > But it could be inside of the retry handling (databasestuff).
> > I guess we will have to wait for Phil to wake up ;)
>
> <fx> alarm-clock </fx>
>
> Hmm. There aren't a huge number of debugging prints in the smtp
> transport at the start, so it isn't narrowed down very much. Like Nico,
> my suspicion is on the database stuff, because that's where such crashes
> have been in the past, but see my comment below.
>
> I think what you will have to do is to insert lots of lines like
>
> debug_printf("+++1\n");
> ...
> debug_printf("+++2\n);
> ...
>
> into the source of transports/smtp.c so as to get additional debugging
> output about where it is getting to before it crashes. It doesn't seem
> to have got as far as checking the retry information for the host,
> because that has already got some debugging statements in the function
> retry_check_address().
>
> Put some debugging around line 1937, to see if it is successfully
> getting the port number.


1937 is the middle of a big comment after getting the port; I assume
you meant 1907. Here's what I did:

/* Sort out the port. Set up a string for adding to the retry key if the port
number is not the standard SMTP port. */
debug_printf("+++Sort out the port-0\n");
if (!smtp_get_port(ob->port, addrlist, &port, tid)) return FALSE;
pistring = string_sprintf(":%d", port);
debug_printf("+++Got the port %s\n",pistring);

and here's what I got, so no, it didn't get the port.

remote_smtp transport entered
glouis@???
+++Sort out the port-0
reading pipe for subprocess 4430 (not ended)
read() yielded 0
remote delivery process 4430 ended: status=000b
set_process_info: 4429 delivering 18dEDA-0008Rg-00

Instrumenting src/smtp_out.c with more debug_printf calls shows it's
getservbyname() that's segfaulting.

--
| G r e g  L o u i s          | gpg public key:      |
|   http://www.bgl.nu/~glouis |   finger greg@??? |
| Help free our mailboxes. Include                   |
|        http://wecanstopspam.org in your signature. |