Hi All,
on my older production server (Deb9 dovecot version 2.2.27-3+deb9u6) a client reported that searching text in one mailbox failed while other mailboxes do search ok. He is using Rouddcube webmail and is searching the whole messages including the body.
Errorlog shows panic and assertion failed logs.
So I'v moved the 'problematic' mailbox to my latest production server (Deb10 2.3.4.1-5+deb10u4 = 2.3.4.1 (f79e8e7e4)) where I have more RAM to eliminate that and the same error appeared. There is nothing special about the mailbox, roughly 600MiB and 2200 messges.
Other much larger mailboxes on the same server do search fine.
After turning on imap logging in Roundcube mail, the critical command was:
A0004 UID SEARCH RETURN (ALL) TEXT whatever
I increased default_process_limit and default_client_limit, I run: doveadm index -u [email protected] -q INBOX
but didn't help.


I used the gdb method to reproduce it and to get the whole info including backtrace:

vmail@s6mail:~$ gdb --args /usr/lib/dovecot/imap -u [email protected]
(gdb) r
Starting program: /usr/lib/dovecot/imap -u [email protected]
process 4458 is executing new program: /usr/bin/doveconf
process 4458 is executing new program: /usr/lib/dovecot/imap
* PREAUTH [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ NOTIFY SPECIAL-USE QUOTA] Logged in as [email protected]
a select INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent Junk $Forwarded NonJunk) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent Junk $Forwarded NonJunk \*)] Flags permitted.
* 682 EXISTS
* 0 RECENT
* OK [UNSEEN 639] First unseen.
* OK [UIDVALIDITY 1147771637] UIDs valid
* OK [UIDNEXT 104487] Predicted next UID
* OK [HIGHESTMODSEQ 53108] Highest
a OK [READ-WRITE] Select completed (0.002 + 0.000 + 0.001 secs).
A0004 UID SEARCH RETURN (ALL) TEXT whatewer
imap([email protected])<4458><Auy4NnMnzl9qEQAAevFY8w>: Panic: file message-parser.c: line 174 (message_part_finish): assertion failed: (ctx->nested_parts_count > 0) imap([email protected])<4458><Auy4NnMnzl9qEQAAevFY8w>: Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0xdb62b) [0x7ffff7dbb62b] -> /usr/lib/dovecot/libdovecot.so.0(+0xdb661) [0x7ffff7dbb661] -> /usr/lib/dovecot/libdovecot.so.0(+0x4a149) [0x7ffff7d2a149] -> /usr/lib/dovecot/libdovecot.so.0(+0x474ac) [0x7ffff7d274ac] -> /usr/lib/dovecot/libdovecot.so.0(message_parser_parse_next_block+0x104) [0x7ffff7da3844] -> /usr/lib/dovecot/libdovecot.so.0(message_search_msg+0xa8) [0x7ffff7da5df8] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0xcf89e) [0x7ffff7f3e89e] -> /usr/lib/dovecot/libdovecot-storage.so.0(mail_search_args_foreach+0x45) [0x7ffff7ec0445] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0xd0774) [0x7ffff7f3f774] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0xd1a68) [0x7ffff7f40a68] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_storage_search_next_nonblock+0x10d) [0x7ffff7f4118d] -> /usr/lib/dovecot/libdovecot-storage.so.0(mailbox_search_next_nonblock+0x28) [0x7ffff7ec9e58] -> /usr/lib/dovecot/imap [[email protected] UID SEARCH](+0x2691f) [0x55555557a91f] -> /usr/lib/dovecot/imap [[email protected] UID SEARCH](command_exec+0x70) [0x555555573d80] -> /usr/lib/dovecot/imap [[email protected] UID SEARCH](+0x25ed2) [0x555555579ed2] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_handle_timeouts+0x111) [0x7ffff7dd18f1] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0xd0) [0x7ffff7dd3070] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x4c) [0x7ffff7dd1b7c] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x40) [0x7ffff7dd1ce0] -> /usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7ffff7d520d3] -> /usr/lib/dovecot/imap [[email protected] UID SEARCH](main+0x325) [0x555555564bf5] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7ffff7b3c09b] -> /usr/lib/dovecot/imap [[email protected] UID SEARCH](_start+0x2a) [0x555555564d8a]

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt full
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 set = {__val = {0, 9355454118400172544, 1928, 1862, 1863, 93824992506008, 65, 140737352109185, 140737351192526, 140737351951989, 257, 145, 206158430224, 140737488344944, 140737488344736, 140737351756174}}
        pid = <optimized out>
        tid = <optimized out>
        ret = <optimized out>
#1  0x00007ffff7b3a535 in __GI_abort () at abort.c:79
        save_stage = 1
act = {__sigaction_handler = {sa_handler = 0x9ef, sa_sigaction = 0x9ef}, sa_mask = {__val = {30216, 93824992300426, 0, 513, 513, 140737351192526, 140737351744763, 140737351192526, 9355454118400172544, 140737351192526, 140737351951234, 140737488344944, 93824992503880, 140737351192526, 140737351951609, 140737351192526}}, sa_flags = -136625910, sa_restorer = 0x5}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007ffff7d2a481 in ?? () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#3 0x00007ffff7dbb661 in default_fatal_handler () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#4 0x00007ffff7d2a149 in i_panic () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#5  0x00007ffff7d274ac in ?? () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#6 0x00007ffff7da3844 in message_parser_parse_next_block () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#7 0x00007ffff7da5df8 in message_search_msg () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#8 0x00007ffff7f3e89e in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0
No symbol table info available.
#9 0x00007ffff7ec0445 in mail_search_args_foreach () from /usr/lib/dovecot/libdovecot-storage.so.0
No symbol table info available.
#10 0x00007ffff7f3f774 in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0
No symbol table info available.
#11 0x00007ffff7f40a68 in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0
No symbol table info available.
#12 0x00007ffff7f4118d in index_storage_search_next_nonblock () from /usr/lib/dovecot/libdovecot-storage.so.0
No symbol table info available.
#13 0x00007ffff7ec9e58 in mailbox_search_next_nonblock () from /usr/lib/dovecot/libdovecot-storage.so.0
No symbol table info available.
#14 0x000055555557a91f in ?? ()
No symbol table info available.
#15 0x0000555555573d80 in command_exec ()
No symbol table info available.
#16 0x0000555555579ed2 in ?? ()
No symbol table info available.
#17 0x00007ffff7dd18f1 in io_loop_handle_timeouts () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#18 0x00007ffff7dd3070 in io_loop_handler_run_internal () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#19 0x00007ffff7dd1b7c in io_loop_handler_run () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#20 0x00007ffff7dd1ce0 in io_loop_run () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#21 0x00007ffff7d520d3 in master_service_run () from /usr/lib/dovecot/libdovecot.so.0
No symbol table info available.
#22 0x0000555555564bf5 in main ()
No symbol table info available.
(gdb)



========================== dovecot -n:
# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 ()
# OS: Linux 5.4.65-1-pve x86_64 Debian 10.6
# Hostname: s6mail.ehosting.cz
default_client_limit = 10000
default_process_limit = 1000
deliver_log_format = msgid=%m, from=%f, Subj=%s: %$
dict {
  expire = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
disable_plaintext_auth = no
first_valid_gid = 150
first_valid_uid = 150
last_valid_gid = 150
last_valid_uid = 150
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_plugins = quota trash expire
mail_privileged_group = vmail
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 spamtest spamtestplus
namespace inbox {
  inbox = yes
  location =
  mailbox Archive {
    auto = subscribe
    special_use = \Archive
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix =
  separator = /
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  antispam_backend = pipe
  antispam_crm_binary = /bin/false
antispam_dspam_args = --deliver=;--user;%u;--source=error;--signature=%%s
  antispam_dspam_binary = /usr/bin/dspam
  antispam_dspam_notspam = --class=innocent
  antispam_dspam_result_header = X-DSPAM-Result
  antispam_dspam_spam = --class=spam
  antispam_pipe_program = /usr/local/bin/postfix/reclasify-from-dovecot
  antispam_pipe_program_args = %u;%d
  antispam_pipe_program_notspam_arg = --ham
  antispam_pipe_program_spam_arg = --spam
  antispam_pipe_tmpdir = /tmp
  antispam_signature = X-CRM114-CacheID
  antispam_signature_missing = error
  antispam_spam = Junk;Spam
  antispam_spool2dir_notspam = /tmp/spamspool/%%020lu-%u-%%05luh
  antispam_spool2dir_spam = /tmp/spamspool/%%020lu-%u-%%05lus
  antispam_trash = trash;Trash;Deleted Items;Deleted Messages
  antispam_verbose_debug = 0
  expire = Trash
  expire2 = Trash/*
  expire3 = Spam
  expire_dict = proxy::expire
  quota = dict:User quota::proxy::quota
  quota_exceeded_message = Uzivatel %u ma zaplnenou schranku.
  quota_rule = *:storage=1G
  quota_rule2 = Trash:storage=+100M
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_after = /etc/dovecot/sieve_after
  sieve_before = /etc/dovecot/sieve_before
  sieve_extensions = +spamtest +spamtestplus
  sieve_spamtest_max_value = 15
  sieve_spamtest_status_header = X-Spam-Level
  sieve_spamtest_status_type = strlen
  trash = /etc/dovecot/dovecot-trash.conf.ext
}
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = UID%u-%v
postmaster_address = [email protected]
protocols = " imap lmtp sieve pop3"
service auth-worker {
  user = $default_internal_user
}
service dict {
  unix_listener dict {
    user = vmail
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0660
    user = postfix
  }
  user = vmail
}
service stats {
  unix_listener stats-writer {
    user = vmail
  }
}
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
syslog_facility = local0
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
verbose_proctitle = yes
protocol lmtp {
  mail_plugins = quota trash expire sieve quota trash expire
}
protocol lda {
  mail_plugins = quota trash expire sieve
}
protocol imap {
  mail_plugins = quota trash expire antispam imap_quota
}

==========================

The dovecot.err shows the two mentioned error lines (Panic:, Error:) plus: Dec 7 13:12:21 s6mail dovecot: imap([email protected])<13466><wezwvN61RK0AAAAAAAAAAAAAAAAAAAAB>: Fatal: master: service(imap): child 13466 killed with signal 6 (core dumps disabled - https://dovecot.org/bugreport.html#coredumps)
Please let me know if you need any other details.

Thanks for any suggestion
--Jiri Kacena

Reply via email to