Bug: indexer-worker segfaults with fts_xapian 1.2.5

Martynas Bendorius martynas at martynas.it
Sun Dec 15 22:35:51 EET 2019


Core was generated by `dovecot/indexer-worker'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f30f7ad056d in __exchange_and_add (__val=-1, __mem=0xfffffffffffffff8)
    at /usr/src/debug/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/ext/atomicity.h:49
49	  { return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }

(gdb) bt full
#0  0x00007f30f7ad056d in __exchange_and_add (__val=-1, __mem=0xfffffffffffffff8)
    at /usr/src/debug/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/ext/atomicity.h:49
No locals.
#1  __exchange_and_add_dispatch (__val=-1, __mem=0xfffffffffffffff8)
    at /usr/src/debug/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/ext/atomicity.h:82
No locals.
#2  std::string::_Rep::_M_dispose (this=0xffffffffffffffe8, __a=...)
    at /usr/src/debug/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/bits/basic_string.h:246
No locals.
#3  0x00007f30f7b3407e in _M_dispose (__a=..., this=<optimized out>)
    at /usr/src/debug/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/bits/basic_string.tcc:254
No locals.
#4  std::string::assign (this=this at entry=0x55c7b93e0168, __str="return-path")
    at /usr/src/debug/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/bits/basic_string.tcc:250
        __a = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}
#5  0x00007f30fa8776ce in operator= (__str="return-path", this=0x55c7b93e0168) at /usr/include/c++/4.8.2/bits/basic_string.h:547
No locals.
#6  fts_backend_xapian_update_set_build_key (_ctx=0x55c7b93e0140, key=0x7ffc1ba2c380) at fts-backend-xapian.cpp:303
        ctx = 0x55c7b93e0140
        i = <optimized out>
        f2 = "return-path"
        backend = <optimized out>
        field = 0x55c7b943fb5f "RETURN-PATH"
        j = 11
#7  0x00007f30fb0b8cda in fts_backend_update_set_build_key (ctx=0x55c7b93e0140, key=key at entry=0x7ffc1ba2c380) at fts-api.c:174
        __func__ = "fts_backend_update_set_build_key"
#8  0x00007f30fb0ba243 in fts_build_mail_header (block=0x7ffc1ba2c340, block=0x7ffc1ba2c340, ctx=0x7ffc1ba2c3b0) at fts-build-mail.c:173
        hdr = <optimized out>
        key = {uid = 6006200, type = FTS_BACKEND_BUILD_KEY_HDR, part = 0x55c7b935eed0, hdr_name = 0x55c7b943fb5f "RETURN-PATH", body_content_type = 0x0, 
          body_content_disposition = 0x0}
        ret = <optimized out>
#9  fts_build_mail_real (may_need_retry_r=0x7ffc1ba2c2f3, retriable_err_msg_r=0x7ffc1ba2c300, mail=0x55c7b93dcff8, update_ctx=0x55c7b93e0140) at fts-build-mail.c:568
        block = {part = 0x55c7b935eed0, hdr = 0x55c7b93d7f18, data = 0x55c7b938b8a8 "", size = 0}
        ret = <optimized out>
        input = 0x55c7b93d78c0
        raw_block = {part = 0x55c7b935eed0, hdr = 0x55c7b93d80b0, data = 0x0, size = 0}
        skip_body = false
        ctx = {mail = 0x55c7b93dcff8, update_ctx = 0x55c7b93e0140, content_type = 0x0, content_disposition = 0x0, body_parser = 0x0, word_buf = 0x0, 
---Type <return> to continue, or q <return> to quit---
          pending_input = 0x0, cur_user_lang = 0x0}
        prev_part = 0x55c7b935eed0
        parser = 0x55c7b93d7b38
        decoder = 0x55c7b93d7f00
        parts = 0x7ffc1ba2c414
        body_part = false
        body_added = false
        binary_body = <optimized out>
        error = 0x5ba5b8 <Address 0x5ba5b8 out of bounds>
#10 fts_build_mail (update_ctx=0x55c7b93e0140, mail=mail at entry=0x55c7b93dcff8) at fts-build-mail.c:617
        _data_stack_cur_id = 6
        attempts = 2
        retriable_err_msg = 0x11e900729 <Address 0x11e900729 out of bounds>
        may_need_retry = false
#11 0x00007f30fb0c1102 in fts_mail_index (_mail=0x55c7b93dcff8) at fts-storage.c:550
        ft = 0x55c7b9396880
        flist = 0x55c7b938b8a8
        pmail = 0x55c7b93dcff8
#12 fts_mail_precache (_mail=0x55c7b93dcff8) at fts-storage.c:571
        _data_stack_cur_id = 5
        mail = 0x55c7b93dcff8
        fmail = <optimized out>
        ft = 0x55c7b9396880
        __func__ = "fts_mail_precache"
#13 0x00007f30fc1b7d64 in mail_precache (mail=0x55c7b93dcff8) at mail.c:432
        _data_stack_cur_id = 4
        p = 0x55c7b93dcff8
#14 0x000055c7b8b4c844 in index_mailbox_precache (conn=<optimized out>, box=0x55c7b938ef18) at master-connection.c:102
        counter = 0
        max = 21569
        percentage_sent = 0
        storage = <optimized out>
        status = {messages = 21569, recent = 0, unseen = 0, uidvalidity = 1462447525, uidnext = 6027769, first_unseen_seq = 0, first_recent_uid = 6027758, 
          last_cached_seq = 0, highest_modseq = 0, highest_pvt_modseq = 0, keywords = 0x0, permanent_flags = 0, flags = 0, permanent_keywords = false, 
          allow_new_keywords = false, nonpermanent_modseqs = false, no_modseq_tracking = false, have_guids = true, have_save_guids = true, have_only_guid128 = false}
        uids = <optimized out>
        username = 0x55c7b9385988 "msg at domain.com"
        first_uid = 6006200
---Type <return> to continue, or q <return> to quit---
        percentage_str = "\003\000\000"
        percentage = <optimized out>
        error = MAIL_ERROR_NONE
        trans = 0x55c7b9390480
        ctx = 0x55c7b93d15f0
        last_uid = 6006200
        ret = 0
        box_vname = 0x55c7b938f280 "INBOX.lfd.SSH login alerts"
        errstr = <optimized out>
        search_args = 0x0
        mail = 0x55c7b93dcff8
        metadata = {guid = '\000' <repeats 15 times>, virtual_size = 0, physical_size = 0, first_save_date = 0, cache_fields = 0x0, 
          precache_fields = (MAIL_FETCH_STREAM_HEADER | MAIL_FETCH_STREAM_BODY | MAIL_FETCH_RECEIVED_DATE | MAIL_FETCH_SAVE_DATE | MAIL_FETCH_PHYSICAL_SIZE | MAIL_FETCH_VIRTUAL_SIZE | MAIL_FETCH_UIDL_BACKEND | MAIL_FETCH_GUID | MAIL_FETCH_POP3_ORDER), backend_ns_prefix = 0x0, backend_ns_type = (unknown: 0)}
        seq = <optimized out>
#15 index_mailbox (user=<optimized out>, user=<optimized out>, what=<optimized out>, max_recent_msgs=<optimized out>, mailbox=<optimized out>, conn=0x55c7b9370df0)
    at master-connection.c:205
        box = 0x55c7b938ef18
        status = {messages = 463652304, recent = 32764, unseen = 1, uidvalidity = 0, uidnext = 4225857431, first_unseen_seq = 32560, first_recent_uid = 4226053086, 
          last_cached_seq = 32560, highest_modseq = 94316285707297, highest_pvt_modseq = 94316294200320, keywords = 0x7f30fbe17797 <__x86_return_thunk+5>, 
          permanent_flags = 4226053495, flags = 32560, permanent_keywords = true, allow_new_keywords = true, nonpermanent_modseqs = true, no_modseq_tracking = false, 
          have_guids = true, have_save_guids = false, have_only_guid128 = false}
        errstr = <optimized out>
        ret = 0
        ns = <optimized out>
        path = 0x55c7b935e7f8 "/home/username/imap/domain.com/msg/Maildir/.INBOX.lfd.SSH login alerts"
        error = 21569
        sync_flags = <optimized out>
#16 master_connection_input_line (line=<optimized out>, conn=0x55c7b9370df0) at master-connection.c:247
        str = <optimized out>
        max_recent_msgs = 0
        ret = <optimized out>
        args = <optimized out>
        input = {parent_event = 0x0, module = 0x55c7b8b4d05f "mail", service = 0x55c7b8b4d050 "indexer-worker", username = 0x55c7b935d038 "msg at domain.com", 
          session_id = 0x0, session_id_prefix = 0x55c7b935d063 "MAYmHNGX9l1rviwA+Lg9Sw", session_create_time = 0, local_ip = {family = 0, u = {ip6 = {__in6_u = {
                  __u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, remote_ip = {
            family = 0, u = {ip6 = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, ip4 = {
                s_addr = 0}}}, local_port = 0, remote_port = 0, userdb_fields = 0x0, flags_override_add = (unknown: 0), flags_override_remove = (unknown: 0), 
---Type <return> to continue, or q <return> to quit---
          no_userdb_lookup = false, debug = false, conn_secured = false, conn_ssl_secured = false}
        service_user = 0x55c7b93732e8
        user = 0x55c7b9385868
        error = 0x0
#17 master_connection_input (conn=0x55c7b9370df0) at master-connection.c:287
        _data_stack_cur_id = 3
        line = <optimized out>
#18 0x00007f30fbed69af in io_loop_call_io (io=0x55c7b9370e30) at ioloop.c:718
        ioloop = 0x55c7b9365d70
        t_id = 2
        __func__ = "io_loop_call_io"
#19 0x00007f30fbed8413 in io_loop_handler_run_internal (ioloop=ioloop at entry=0x55c7b9365d70) at ioloop-epoll.c:222
        ctx = 0x55c7b9366ea0
        list = 0x55c7b9370e90
        io = <optimized out>
        tv = {tv_sec = 2147483, tv_usec = 0}
        events_count = <optimized out>
        msecs = <optimized out>
        ret = 1
        i = 0
        call = <optimized out>
        __func__ = "io_loop_handler_run_internal"
#20 0x00007f30fbed6ab9 in io_loop_handler_run (ioloop=ioloop at entry=0x55c7b9365d70) at ioloop.c:770
        __func__ = "io_loop_handler_run"
#21 0x00007f30fbed6cf8 in io_loop_run (ioloop=0x55c7b9365d70) at ioloop.c:743
        __func__ = "io_loop_run"
#22 0x00007f30fbe46d83 in master_service_run (service=0x55c7b9365c00, callback=callback at entry=0x55c7b8b4c3e0 <client_connected>) at master-service.c:809
No locals.
#23 0x000055c7b8b4c21e in main (argc=1, argv=0x55c7b9365960) at indexer-worker.c:77
        storage_service_flags = (MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP | MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP | MAIL_STORAGE_SERVICE_FLAG_NO_IDLE_TIMEOUT)
        c = <optimized out>

--
Best regards,
Martynas Bendorius




More information about the dovecot mailing list