lmtpd segfaults after update to 2.4.19, seems it wants to act as proxy
Simon Matter
simon.matter at invoca.ch
Sat May 20 03:59:30 EDT 2017
>
> Quoting Simon Matter <simon.matter at invoca.ch>:
>
>> Hi,
>>
>> I'm resending this with new subject and one again attached the straces
>> of
>> a delivery with 2.4.18 and 2.4.19.
>>
>>>>> I've just updated our cyrus-imapd rpms from 2.4.18 -> 2.4.19. All
>> seems well with just some small changes to the build.
>>>>>
>>>>> However, I just can't get it to work: lmtpd segfaults on mail
>>>>> delivery.
>>>>>
>>>>> The logs show something like this:
>>>>> May 17 14:21:42 mh1 kernel: lmtpd[7433]: segfault at 5ebc24d7 ip
>> 00007f216292973b sp 00007ffe5ebc1f58 error 4 in
>>>>> lmtpd[7f21628c1000+169000]
>>>>> May 17 14:21:42 mh1 master[7423]: process 7433 exited, signaled to
>>>>> death
>>>>> by 11
>>>>>
>>>>> First I've rebuilt without some of the custom patches in the package
>>>>> like
>>>>> the autocreate patches. But without a change.
>>>>>
>>>>> I've then straced an lmtpd during mail delivery, once with 2.4.18 and
>> once
>>>>> with 2.4.19 in the hope to find something. The traces are attached.
>>>>>
>>>>> I see that there were quite some change concerning lmtp, does anyone
>> of the developers have an idea where the problem in lmtpd changes
>> could be?
>>>>
>>>> It turns out that lmtpd wants to act as proxy, because only then it
>> creates the spoolfile in /tmp/. But why?
>>>> Regards,
>>>> Simon
>>>>
>>>
>>> Are you running a murder setup? Can you produce a coredump and brovide
>>> a
>> backtrace with symbols loaded?
>>
>> Hi,
>>
>> I did two things meanwhile:
>>
>> 1) Built a completely vanilla cyrus-imapd-2.4.19 without any patches to
>> make sure it's not anything wrong with additional patches. The crash was
>> the same.
>>
>> 2) Ran the normal build with an unstripped "lmtpd" binary and produced
>> core and backtrace. So below:
>>
>> Core was generated by `lmtpd'.
>> Program terminated with signal 11, Segmentation fault.
>> #0 strlcpy (dst=0x7ffaa64e00d0 "", src=0x5d73c6c7 <Address 0x5d73c6c7
>> out
>> of bounds>, len=1024) at xstrlcpy.c:65
>> 65 if ((dst[n] = src[n]) == '\0') break;
>> Missing separate debuginfos, use: debuginfo-install
>> cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64
>> cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64
>> cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64
>> cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64 db4-4.7.25-22.el6.x86_64
>> glibc-2.12-1.209.el6_9.1.x86_64 keyutils-libs-1.4-5.el6.x86_64
>> krb5-libs-1.10.3-65.el6.x86_64 libcom_err-1.41.12-23.el6.x86_64
>> libselinux-2.0.94-7.el6.x86_64
>> nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64
>> openssl-1.0.1e-57.el6.x86_64 pcre-7.8-7.el6.x86_64
>> tcp_wrappers-libs-7.6-58.el6.x86_64 zlib-1.2.3-29.el6.x86_64
>> (gdb) bt
>> #0 strlcpy (dst=0x7ffaa64e00d0 "", src=0x5d73c6c7 <Address 0x5d73c6c7
>> out
>> of bounds>, len=1024) at xstrlcpy.c:65
>> #1 0x00007ffaa5150c2e in proxy_adddest (dlist=0x7ffc5d73c288,
>> rcpt=0x7ffaa64d26d0 "simix at imap.bi.corp.invoca.ch", rcpt_num=0,
>> server=0x5d73c6c7 <Address 0x5d73c6c7 out of bounds>, authas=0x0) at
>> proxy.c:81
>
> here the bt is already in the wrong path and server has not been set
> wich leads to the SIGSEV
>
>> #2 0x00007ffaa514fbae in deliver (msgdata=0x7ffaa64d0950, authuser=0x0,
>> authstate=0x7ffc5d73c280) at lmtpd.c:749
>
> This is the point where the wrong path is taken.
>
>
> r = mlookup(namebuf, &server, NULL, NULL);
> if (!r && server) {
> /* remote mailbox */
> proxy_adddest(&dlist, rcpt, n, server, authuser);
> status[n] = nosieve;
> }
>
> mlookup did return something that is not 0, and server has not been set
> in mlookup. In 2.4.17 there has was "if (server) *server = NULL;"
Hi Michael,
Thanks a lot for pointing me into the right direction. Indeed attached
patch makes it work for me.
I don't know if this is the proper fix for the issue. Hopefully someone
who knows better than me can comment.
Regards,
Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cyrus-imapd-2.4.19-deliver_local_segfault.patch
Type: text/x-patch
Size: 430 bytes
Desc: not available
URL: <http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20170520/0bf90fca/attachment.bin>
More information about the Info-cyrus
mailing list