Re: [exim] Exim 4.95-RC2 released

Top Page
Delete this message
Reply to this message
Author: Evgeniy Berdnikov
Date:  
To: exim-users
Subject: Re: [exim] Exim 4.95-RC2 released
On Tue, Sep 07, 2021 at 03:32:02PM +0100, Jeremy Harris via Exim-users wrote:
> Another test you could try is a build with
> #define MISSING_POSIX_MEMALIGN
> in OS/os.h-Linux.
> If that still coredumps in the same place, it's not a "write
> to readonly data" trap; so more likely a null pointer.


OK. Exim was recompiled with MISSING_POSIX_MEMALIGN.
Segfaults are still here. I see no significant difference with old dumps.
Fault happens on sender verify callout, in rcpt or pre-data ACLs.
Here is the recent example, callout from acl_check_rcpt:

Reading symbols from /usr/sbin/exim4...
[New LWP 1352271]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/sbin/exim4 -bd -q1m'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0xf7238b0d in _gnutls_trust_list_get_issuer (list=0x58441780, 
    cert=0x59027530, issuer=0xffbec6a8, flags=0)
    at ../../../lib/x509/verify-high.c:1026
#0  0xf7238b0d in _gnutls_trust_list_get_issuer (list=0x58441780, 
    cert=0x59027530, issuer=0xffbec6a8, flags=0)
    at ../../../lib/x509/verify-high.c:1026
        ret = <optimized out>
        i = 0
        hash = 1408224284
#1  0xf7238be6 in gnutls_x509_trust_list_get_issuer (list=0x58441780, 
    cert=0x59027530, issuer=0xffbec6a8, flags=0)
    at ../../../lib/x509/verify-high.c:1128
        ret = <optimized out>
        __func__ = "gnutls_x509_trust_list_get_issuer"
#2  0xf7239613 in gnutls_x509_trust_list_verify_crt2 (list=0x58441780, 
    cert_list=0xffbec6bc, cert_list_size=<optimized out>, data=0x0, 
    elements=0, flags=33554432, voutput=0xffbec970, func=0x0)
    at ../../../lib/x509/verify-high.c:1521
        sorted_size = <optimized out>
        j = <optimized out>
        issuer = 0xffbec704
        ret = <optimized out>
        i = <optimized out>
        hash = <optimized out>
        sorted = {0x59025230, 0x59027530, 0x5, 0x8c, 0xf73ffe7c <calloc+140>, 
          0xffbec810, 0xf72022f6 <_gnutls_x509_crt_get_extension+6>, 
          0xf7375f0c, 0x4946dc00, 0x59027530, 0xf72a922d, 0xf73fb8fb, 
          0xf7375f0c, 0xf65428ec, 0x58da0540, 0x59027530}
        retrieved = {0xf71ebedf <rpl_free+63>, 0x585c0830, 0x0, 
          0xf7579885 <__errno_location+5>, 0xf71ebec1 <rpl_free+33>, 
          0xf65428ec, 0x0, 0x0, 0x4946dc00, 0xf71ebea7 <rpl_free+7>, 
          0xf7375f0c, 0x0, 
          0xf71c3f4c <_gnutls_ocsp_verify_mandatory_stapling+156>, 0x585c0830, 
          0x585c0830, 0x0}
        retrieved_size = 0
        hostname = <optimized out>
        purpose = <optimized out>
        email = <optimized out>
        hostname_size = <optimized out>
        have_set_name = <optimized out>
        saved_output = <optimized out>
        ip = {data = <optimized out>, size = <optimized out>}
        cert_set = {node = <optimized out>, size = <optimized out>}
        __func__ = "gnutls_x509_trust_list_verify_crt2"
        __PRETTY_FUNCTION__ = "gnutls_x509_trust_list_verify_crt2"
#3  0xf71c4647 in _gnutls_x509_cert_verify_peers (session=0x58da0540, 
    data=0x0, elements=0, status=0xffbec970) at ../../lib/cert-session.c:597
        info = <optimized out>
        cred = 0x58441620
        peer_certificate_list = 0x5840d9c0
        resp = {data = 0x58d9fde0 "0\202\001\323\n\001", size = 471}
        peer_certificate_list_size = <optimized out>
        i = <optimized out>
        x = <optimized out>
        ret = <optimized out>
        cand_issuers = <optimized out>
        cand_issuers_size = <optimized out>
        ocsp_status = 0
        verify_flags = <optimized out>
        __func__ = "_gnutls_x509_cert_verify_peers"
#4  0xf71c4f3f in gnutls_certificate_verify_peers (session=0x58da0540, 
    data=0x0, elements=0, status=0xffbec970) at ../../lib/cert-session.c:776
        info = <optimized out>
        __func__ = "gnutls_certificate_verify_peers"
#5  0xf71c4fd0 in gnutls_certificate_verify_peers2 (session=0x58da0540, 
    status=0xffbec970) at ../../lib/cert-session.c:653
No locals.
#6  0x566f288b in verify_certificate (state=<optimized out>, errstr=0xffbeca80)
    at tls-gnu.c:2518
        rc = <optimized out>
        verify = 1480842840
        __FUNCTION__ = "verify_certificate"
#7  0x566f4b1b in tls_client_start (cctx=0x5900d248, conn_args=0x58ffd1ec, 
    cookie=0x58d9e69c, tlsp=0x567d1ee0 <tls_out>, errstr=0xffbeca80)
    at tls-gnu.c:3591
        host = 0x584f4934
        tb = <optimized out>
        ob = 0x5843dd6c
        rc = 0
        state = 0x5843efac
        cipher_list = <optimized out>
        require_ocsp = 0
        request_ocsp = 1
        __FUNCTION__ = "tls_client_start"
#8  0x567265b6 in smtp_setup_conn (sx=<optimized out>, 
    suppress_tls=<optimized out>) at smtp.c:2673
        buffer2 = "220 2.0.0 SMTP server ready\000\360˾\377;\260>\367\354ʾ\377.\267tV\360˾\377\006\000\000\000\354ʾ\377\250GOX\027\000\000\000\250GOXprotecti.\267tV\250GOXok\003com\000V\000\000\000\000\001\200\255\373\250GOX\250GOX\250GOX\250GOX\265GOX\277GOX\250GOX\277GOX", '\000' <repeats 20 times>, "\324\031}V\000\000\000\000\330\031}V\000\000\000\377\000\000\000\000(\023xV\001\000CM\374EOX\377\377\377\377", '\000' <repeats 12 times>, "\377\377\377\377"...
        ob = <optimized out>
        pass_message = 0
        message = 0x0
        yield = 0
        tls_errstr = 0x0
        __FUNCTION__ = "smtp_setup_conn"
#9  0x56700d46 in do_callout (pm_mailfrom=<optimized out>, 
    se_mailfrom=<optimized out>, options=<optimized out>, 
    callout_connect=<optimized out>, callout_overall=<optimized out>, 
    callout=<optimized out>, tf=0xffbedde0, host_list=<optimized out>, 
    addr=<optimized out>) at verify.c:677
        host_af = <optimized out>
        port = 25
        interface = 0x0
        host = <optimized out>
...
-- 
 Eugene Berdnikov