fts lucene crashes in 2.2.24
Aki Tuomi
aki.tuomi at dovecot.fi
Tue Jun 7 11:52:41 UTC 2016
On 29.05.2016 10:56, Wolfgang Rosenauer wrote:
> Hi,
>
> I've just enabled FTS via Lucene on my Dovecot 2.2.24 installation but I
> see the indexer crashing ?always?.
>
> This simple testcase with a very tiny testing mailbox exposes the issue
> immediately:
>
> doveadm -v index -u anmesse INBOX
>
> Program received signal SIGSEGV, Segmentation fault.
> rescan_clear_unseen_mailbox (rescan_ctx=rescan_ctx at entry=0x0,
> vname=0x555555839820 "INBOX.Testfolder 2", hdr=hdr at entry=0x7fffffffdaf0) at
> lucene-wrapper.cc:831
> 831 (enum mailbox_flags)0);
> (gdb) bt full
> #0 rescan_clear_unseen_mailbox (rescan_ctx=rescan_ctx at entry=0x0,
> vname=0x555555839820 "INBOX.Testfolder 2", hdr=hdr at entry=0x7fffffffdaf0) at
> lucene-wrapper.cc:831
> box = 0x7ffff76fd0ad <mailbox_list_iter_next+285>
> metadata = {guid = "\230\332\377\377\377\177\000\000\200߈UUU\000",
> virtual_size = 140737340823160, physical_size = 140737488345756,
> first_save_date = 140737488345840,
> cache_fields = 0x555500000000,
> precache_fields = (MAIL_FETCH_SAVE_DATE |
> MAIL_FETCH_PHYSICAL_SIZE | MAIL_FETCH_NUL_STATE | MAIL_FETCH_STREAM_BINARY
> | MAIL_FETCH_IMAP_BODY | MAIL_FETCH_IMAP_BODYSTRUCTURE |
> MAIL_FETCH_IMAP_ENVELOPE | MAIL_FETCH_FROM_ENVELOPE | MAIL_FETCH_REFCOUNT |
> MAIL_FETCH_BODY_SNIPPET | unknown: 1409286144), backend_ns_prefix = 0x0,
> backend_ns_type = (unknown: 4294957808)}
> #1 0x00007ffff489aade in rescan_clear_unseen_mailboxes
> (index=index at entry=0x555555822e20,
> rescan_ctx=rescan_ctx at entry=0x0) at lucene-wrapper.cc:863
> iter = 0x55555588d530
> info = <optimized out>
> vname = <optimized out>
> hdr = {last_indexed_uid = 0, settings_checksum = 3784394109, unused
> = 0}
> ns = 0x55555580f6c0
> #2 0x00007ffff489b700 in lucene_settings_check (index=0x555555822e20) at
> lucene-wrapper.cc:429
> set_checksum = <optimized out>
> ret = <optimized out>
> #3 lucene_index_build_init (index=0x555555822e20) at lucene-wrapper.cc:448
> lock_path = 0x5555557dd320
> "/srv/dovecot/anmesse/maildir/lucene-indexes/write.lock"
> st = {st_dev = 93823560581121, st_ino = 0, st_nlink =
> 140737344007992, st_mode = 4150696184, st_uid = 32767, st_gid = 5, __pad0 =
> 0, st_rdev = 93824995156880, st_size = 93824995175648,
> st_blksize = 140737351975397, st_blocks = 93824995096256, st_atim
> = {tv_sec = 140737488346056, tv_nsec = 5}, st_mtim = {tv_sec = 5, tv_nsec =
> 93824995156880}, st_ctim = {
> tv_sec = 93824995175648, tv_nsec = 140737488346352},
> __glibc_reserved = {140737488346352, 93824995267672, 140737344364485}}
> exists = <optimized out>
> #4 0x00007ffff4899dbe in fts_backend_lucene_update_set_build_key
> (_ctx=0x55555583a550, key=0x7fffffffdcf0) at fts-backend-lucene.c:366
> ctx = 0x55555583a550
> backend = 0x555555822ce0
> __FUNCTION__ = "fts_backend_lucene_update_set_build_key"
> #5 0x00007ffff674c984 in fts_backend_update_set_build_key
> (ctx=0x55555583a550, key=key at entry=0x7fffffffdcf0) at fts-api.c:175
> __FUNCTION__ = "fts_backend_update_set_build_key"
> #6 0x00007ffff674dbb8 in fts_build_mail_header (block=0x7fffffffdcd0,
> block=0x7fffffffdcd0, ctx=0x7fffffffdd20) at fts-build-mail.c:174
> hdr = <optimized out>
> key = {uid = 96, type = FTS_BACKEND_BUILD_KEY_HDR, part =
> 0x5555557dd2c0, hdr_name = 0x5555558396b0 "Return-Path", body_content_type
> = 0x0, body_content_disposition = 0x0}
> ret = <optimized out>
> #7 fts_build_mail_real (mail=0x555555838190, update_ctx=0x55555583a550) at
> fts-build-mail.c:548
> block = {part = 0x5555557dd2c0, hdr = 0x555555839458, data =
> 0x55550000007c <error: Cannot access memory at address 0x55550000007c>,
> size = 0}
> ret = <optimized out>
> input = 0x555555838eb0
> raw_block = {part = 0x5555557dd2c0, hdr = 0x5555558395e0, data =
> 0x0, size = 0}
> skip_body = false
> ctx = {mail = 0x555555838190, update_ctx = 0x55555583a550,
> content_type = 0x0, content_disposition = 0x0, body_parser = 0x0, word_buf
> = 0x0, pending_input = 0x0, cur_user_lang = 0x0}
> prev_part = 0x5555557dd2c0
> parser = 0x555555839070
> decoder = 0x555555839440
> parts = 0x31
> body_part = false
> body_added = false
> binary_body = <optimized out>
> error = 0x60 <error: Cannot access memory at address 0x60>
> #8 fts_build_mail (update_ctx=0x55555583a550, mail=mail at entry=0x555555838190)
> at fts-build-mail.c:594
> _data_stack_cur_id = 5
> #9 0x00007ffff675393e in fts_mail_index (_mail=0x555555838190) at
> fts-storage.c:501
> ft = 0x5555558366a0
> flist = 0x55555581ea68
> #10 fts_mail_precache (_mail=0x555555838190) at fts-storage.c:520
> _data_stack_cur_id = 4
> mail = 0x555555838190
> fmail = <optimized out>
> ft = <optimized out>
> #11 0x00007ffff76987b9 in mail_precache (mail=0x555555838190) at mail.c:401
> _data_stack_cur_id = 3
> p = 0x555555838190
> #12 0x0000555555582fa7 in cmd_index_box_precache (box=0x55555582fd80) at
> doveadm-mail-index.c:75
> ctx = 0x555555839be0
> 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)}
> counter = 0
> max = 15
> status = {messages = 15, recent = 0, unseen = 0, uidvalidity =
> 1048765368, uidnext = 151, first_unseen_seq = 0, first_recent_uid = 151,
> last_cached_seq = 0, highest_modseq = 0,
> highest_pvt_modseq = 0, keywords = 0x0, permanent_flags = 0,
> permanent_keywords = 0, allow_new_keywords = 0, nonpermanent_modseqs = 0,
> no_modseq_tracking = 0, have_guids = 1,
> have_save_guids = 1, have_only_guid128 = 0}
> mail = 0x555555838190
> ret = 0
> trans = 0x555555834310
> search_args = 0x0
> seq = <optimized out>
> #13 cmd_index_box (info=<optimized out>, info=<optimized out>,
> ctx=0x555555807410) at doveadm-mail-index.c:130
> box = 0x55555582fd80
> status = {messages = 130, recent = 0, unseen = 0, uidvalidity = 0,
> uidnext = 1434552496, first_unseen_seq = 21845, first_recent_uid =
> 4294958896, last_cached_seq = 32767,
> highest_modseq = 93824995069728, highest_pvt_modseq =
> 93824995074385, keywords = 0x555555819868, permanent_flags = 4150947016,
> permanent_keywords = 1, allow_new_keywords = 1,
> nonpermanent_modseqs = 1, no_modseq_tracking = 1, have_guids = 1,
> have_save_guids = 1, have_only_guid128 = 1}
> ret = 0
> #14 cmd_index_run (_ctx=0x555555807410, user=0x5555558188b0) at
> doveadm-mail-index.c:201
> _data_stack_cur_id = 2
> iter = 0x55555582b9f0
> info = <optimized out>
> ret = 0
> user = 0x5555558188b0
> _ctx = 0x555555807410
> ctx = 0x555555807410
> i = <optimized out>
> #15 0x000055555557dedf in doveadm_mail_next_user (ctx=ctx at entry=0x555555807410,
> cctx=cctx at entry=0x7fffffffe2a0, error_r=error_r at entry=0x7fffffffe0b8) at
> doveadm-mail.c:400
> input = {module = 0x0, service = 0x5555555b15a9 "doveadm", username
> = 0x5555557da298 "anmesse", session_id = 0x0, session_id_prefix = 0x0,
> local_ip = {family = 0, u = {ip6 = {__in6_u = {
> ---Type <return> to continue, or q <return> to quit---
> __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), no_userdb_lookup = 0, debug = 0}
> error = 0x20 <error: Cannot access memory at address 0x20>
> ip = <optimized out>
> ret = <optimized out>
> __FUNCTION__ = "doveadm_mail_next_user"
> #16 0x000055555557e843 in doveadm_mail_single_user
> (ctx=ctx at entry=0x555555807410,
> cctx=cctx at entry=0x7fffffffe2a0, error_r=error_r at entry=0x7fffffffe0b8) at
> doveadm-mail.c:431
> __FUNCTION__ = "doveadm_mail_single_user"
> #17 0x000055555557e8fd in doveadm_mail_cmd_exec (ctx=ctx at entry=0x555555807410,
> cctx=cctx at entry=0x7fffffffe2a0, wildcard_user=wildcard_user at entry=0x0) at
> doveadm-mail.c:589
> ret = <optimized out>
> error = 0x7ffff7fe89e8 ""
> #18 0x000055555557f6ef in doveadm_cmd_ver2_to_mail_cmd_wrapper
> (cctx=0x7fffffffe2a0) at doveadm-mail.c:1030
> mctx = 0x555555807410
> wildcard_user = <optimized out>
> username_args = {0x5555555b1479 "-u", 0x5555557da298 "anmesse", 0x0}
> fieldstr = 0x7ffff73d7423 <t_malloc0+35>
> "H\203\304\bH\211\330[]\303\017\037"
> username_args_count = <optimized out>
> i = <optimized out>
> mail_cmd = {alloc = 0x555555582ad0 <cmd_index_alloc>, name =
> 0x5555555b3e7b "index", usage_args = 0x5555555b2ee8 "[-u <user>|-A] [-S
> <socket_path>] [-q] [-n <max recent>] <mailbox mask>"}
> #19 0x000055555558c93c in doveadm_cmd_run_ver2 (argc=4,
> argv=0x5555557e13a0, cctx=cctx at entry=0x7fffffffe2a0) at doveadm-cmd.c:524
> param = <optimized out>
> pargv = {arr = {buffer = 0x5555557d9a40, element_size = 104}, v =
> 0x5555557d9a40, v_modifiable = 0x5555557d9a40}
> opts = {arr = {buffer = <optimized out>, element_size = 32}, v =
> <optimized out>, v_modifiable = <optimized out>}
> pargc = 7
> c = -1
> li = 21845
> pool = 0x5555557d9778
> optbuf = 0x5555557d9790
> __FUNCTION__ = "doveadm_cmd_run_ver2"
> #20 0x000055555558c9d7 in doveadm_cmd_try_run_ver2 (cmd_name=<optimized
> out>, argc=4, argv=0x5555557e13a0, cctx=0x7fffffffe2a0) at doveadm-cmd.c:447
> cmd = <optimized out>
> #21 0x000055555556fb1f in main (argc=4, argv=0x5555557e13a0) at
> doveadm.c:376
> cctx = {cmd = 0x5555557e8208, argc = 7, argv = 0x5555557d9a78,
> username = 0x5555557da298 "anmesse", cli = true, 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}
> cmd_name = 0x5555557e13dc "index"
> quick_init = false
> c = <optimized out>
>
>
> doveconf -n:
>
> # 2.2.24 (a82c823): /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.4.14 (099a97c)
> # OS: Linux 4.1.21-14-default x86_64 openSUSE 42.1 (x86_64)
> auth_mechanisms = plain login
> imap_id_log = *
> mail_gid = vmail
> mail_home = /srv/dovecot/%u
> mail_location = maildir:~/maildir
> mail_plugins = acl fts fts_lucene virtual zlib quota
> mail_uid = vmail
> mailbox_list_index = yes
> managesieve_notify_capability = mailto
> managesieve_sieve_capability = fileinto reject envelope encoded-character
> vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
> copy include variables body enotify environment
> mailbox date index ihave duplicate mime foreverypart extracttext
> namespace {
> list = children
> location =
> maildir:/srv/dovecot/%%u/maildir:INDEX=~/maildir/shared/%%u:CONTROL=~/maildir/shared/%%u
> prefix = shared.%%n.
> separator = .
> subscriptions = yes
> type = shared
> }
> namespace inbox {
> inbox = yes
> location =
> mailbox Drafts {
> special_use = \Drafts
> }
> mailbox Entwürfe {
> special_use = \Drafts
> }
> mailbox "Gesendete Objekte" {
> special_use = \Sent
> }
> mailbox Sent {
> special_use = \Sent
> }
> mailbox "Sent Items" {
> special_use = \Sent
> }
> mailbox Spam {
> auto = create
> special_use = \Junk
> }
> mailbox Trash {
> auto = subscribe
> special_use = \Trash
> }
> prefix = INBOX.
> separator = .
> type = private
> }
> passdb {
> args = /etc/dovecot/dovecot-ldap.conf.ext
> driver = ldap
> }
> plugin {
> acl = vfile
> acl_shared_dict = file:/srv/dovecot/shared-mailboxes.db
> fts = lucene
> fts_autoindex = yes
> fts_lucene = whitespace_chars="@"
> quota = dict:User quota::file:%h/dovecot-quota
> quota_grace = 10%%
> quota_rule = *:storage=100M
> quota_rule2 = INBOX.Trash:storage=+10M
> quota_status_nosuser = DUNNO
> quota_status_overquota = 552 5.2.2 Mailbox is full / Mailbox ist voll
> quota_status_success = DUNNO
> sieve = file:~/sieve;active=~/.dovecot.sieve
> zlib_save = gz
> zlib_save_level = 6
> }
> protocols = imap pop3 lmtp sieve
> service auth {
> unix_listener /var/spool/postfix/private/auth {
> group = postfix
> mode = 0660
> user = postfix
> }
> unix_listener auth-userdb {
> mode = 0777
> }
> }
> service lmtp {
> unix_listener /var/spool/postfix/private/dovecot-lmtp {
> group = postfix
> mode = 0660
> user = postfix
> }
> }
> service managesieve-login {
> inet_listener sieve {
> port = 4190
> }
> inet_listener sieve_deprecated {
> port = 2000
> }
> }
> service quota-status {
> client_limit = 1
> executable = quota-status -p postfix
> inet_listener {
> address = 127.0.0.1,::1
> port = 12340
> }
> }
> ssl_cert = <
> ssl_dh_parameters_length = 2048
> ssl_key = <
> ssl_options = no_compression
> ssl_prefer_server_ciphers = yes
> userdb {
> driver = prefetch
> }
> userdb {
> args = /etc/dovecot/dovecot-ldap.conf.ext
> driver = ldap
> }
> userdb {
> args = username_format=%n /etc/dovecot/shared-mailboxes
> default_fields = uid=600 gid=600 home=/srv/dovecot/%n
> driver = passwd-file
> }
> protocol lmtp {
> mail_plugins = acl fts fts_lucene virtual zlib quota sieve
> }
> protocol imap {
> mail_max_userip_connections = 30
> mail_plugins = acl fts fts_lucene virtual zlib quota imap_acl imap_zlib
> imap_quota
> namespace inbox {
> location =
> mailbox Spam {
> autoexpunge = 90 days
> }
> mailbox Trash {
> autoexpunge = 370 days
> }
> prefix =
> }
> }
Thank you for your report, we are looking into it.
Aki
More information about the dovecot
mailing list