Re: [exim-dev] Debugging SMTP transport crash

Top Page

Reply to this message
Author: Florian Weimer
Date:  
To: Jeremy Harris via Exim-dev
CC: Jeremy Harris
Subject: Re: [exim-dev] Debugging SMTP transport crash
* Jeremy Harris via Exim-dev:

>> Alternatively, I guess I could capture a coredump somehow, but that
>> might prove difficult as well due to the use of setuid etc.
>
> Yup. The /proc setuid-dump things. One to set the dumpability,
> one to set the filename. And also, ulimit -c.


Thanks. This is the backtrace:

#0  retry_add_item (addr=addr@entry=0x0, 
    key=0x55f7e124fba0 "T:mx03.t-online.de:194.25.134.73", flags=flags@entry=3)
    at retry.c:298
#1  0x000055f7e0277362 in smtp_transport_entry (tblock=0x55f7e124d630, 
    addrlist=0x55f7e124ee08) at smtp.c:4121
#2  0x000055f7e01fda0c in do_remote_deliveries (fallback=fallback@entry=0)
    at deliver.c:4655
#3  0x000055f7e02026f5 in deliver_message (
    id=0x7ffecfa358d3 "1iDwv6-0000iH-FV", forced=<optimized out>, 
    give_up=<optimized out>) at deliver.c:7014
#4  0x000055f7e01ea661 in main (argc=<optimized out>, cargv=0x7ffecfa346a8)
    at exim.c:4659


It looks like first_addr is NULL in smtp_transport_entry, so I assume
PREPARE_ADDRESSES return NULL. addr_list points to:

$1 = {next = 0x0, parent = 0x0, first = 0x0, dupof = 0x0, start_router = 0x0, 
  router = 0x55f7e124b3f0, transport = 0x55f7e124d630, 
  host_list = 0x55f7e124f6c0, host_used = 0x55f7e124f6c0, 
  fallback_hosts = 0x0, reply = 0x0, retries = 0x55f7e124fa90, 
  address = 0x55f7e124e738 "<REMOVED>@t-online.de", 
  unique = 0x55f7e124efa8 "<REMOVED>@t-online.de", 
  cc_local_part = 0x55f7e124efd8 "<REMOVED>", 
  lc_local_part = 0x55f7e124efe8 "<REMOVED>", 
  local_part = 0x55f7e124efe8 "<REMOVED>", prefix = 0x0, suffix = 0x0, 
  domain = 0x55f7e124efc8 "t-online.de", 
  address_retry_key = 0x55f7e124f008 "R:<REMOVED>@t-online.de", 
  domain_retry_key = 0x55f7e124eff8 "R:t-online.de", current_dir = 0x0, 
  home_dir = 0x0, 
  message = 0x55f7e124f9d0 "SMTP error from remote mail server after initial connection: 554 IP=37.24.231.21 - A problem occurred. (Ask your postmaster for help or to contact tosa@??? to clarify.) (BL)", user_message = 0x0, 
  onetime_parent = 0x0, pipe_expandn = 0x0, return_filename = 0x0, 
  self_hostname = 0x0, shadow_message = 0x0, cipher = 0x0, ourcert = 0x0, 
  peercert = 0x0, peerdn = 0x0, ocsp = 0, authenticator = 0x0, auth_id = 0x0, 
  auth_sndr = 0x0, dsn_orcpt = 0x0, dsn_flags = 0, dsn_aware = 0, 
  uid = 4294967295, gid = 4294967295, flags = 33554432, domain_cache = {15}, 
  localpart_cache = {0}, mode = -1, more_errno = 77, basic_errno = 0, 
  child_count = 0, return_file = -1, special_action = 0, transport_return = 2, 
  prop = {address_data = 0x0, domain_data = 0x0, localpart_data = 0x0, 
    errors_address = 0x0, extra_headers = 0x0, remove_headers = 0x0}}


transport_return == 2 (FAIL?) is consistent with a NULL return value
from prepare_addresses.

Not sure if this relevant, but there is an expired database entry:

27-Sep-2019 20:32:52 27-Sep-2019 20:56:11 27-Sep-2019 21:11:11
T:mx03.t-online.de:194.25.134.73 111 77 Connection refused

Since this is with Exim 4.89 in Debian, I went through the commit log,
and found this:

commit e69636bc9ddf3617be688b07941d7d659d50eaa7
Author: Jeremy Harris <jgh146exb@???>
Date: Sat Jun 3 13:39:18 2017 +0100

    Fix crash in transport, on second smtp-connect fail for a list of target hosts


    Reported as the sequence:
      1MX: 554 on connect (banner)
      2MX: TCP conn timeout


Could this be relevant?

I can probably upgrade to the latest Debian version and see if the
issue goes away.