Hi,
I got a doveadm panic while running purge -A with 2.2.25
doveadm(x@itronic.at): Panic: file mdbox-map.c: line 1359: unreached doveadm(x@itronic.at): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x8dc6e) [0x7f2fe2022c6e] -> /usr/lib/dovecot/libdovecot.so.0(+0x8dce8) [0x7f2fe2022ce8] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f2fe1fc102e] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_map_append_move+0x1ed) [0x7f2fe2301c0d] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_purge+0xfe3) [0x7f2fe2303103] -> doveadm(+0x29458) [0x7f2fe2c7e458] -> doveadm(+0x2910f) [0x7f2fe2c7e10f] -> doveadm(+0x29db4) [0x7f2fe2c7edb4] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x278) [0x7f2fe2c7fae8] -> doveadm(doveadm_cmd_run_ver2+0x560) [0x7f2fe2c8dfd0] -> doveadm(doveadm_cmd_try_run_ver2+0x37) [0x7f2fe2c8e027] -> doveadm(main+0x1e4) [0x7f2fe2c6f414] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f2fe1c0bb45] -> doveadm(+0x1a7ee) [0x7f2fe2c6f7ee]
The command was run in a cleanup script that expunge old mails from the lazy-plugin.
#!/bin/sh
# Permanently expunge old Trash doveadm expunge -A -d mailbox '#EXPUNGED/*' savedbefore 2w
# Optimize mdbox storage and sis storage doveadm purge -A
After rerunning the command it fails again.
stace could be found after config.
config: # 2.2.devel (6d2fa6b): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.devel (3f51b82) # OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.5 auth_cache_negative_ttl = 1 secs auth_cache_size = 10 M auth_cache_ttl = 1 secs auth_mechanisms = PLAIN LOGIN DIGEST-MD5 SCRAM-SHA-1 CRAM-MD5 APOP auth_verbose = yes default_client_limit = 600 default_vsz_limit = 512 M dict { lastlogin = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext sqlacl = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext } disable_plaintext_auth = no first_valid_gid = 1001 first_valid_uid = 1001 hostname = mailstore1@itronic.at imap_hibernate_timeout = 1 mins imap_id_log = * imap_id_send = * imap_idle_notify_interval = 10 mins instance_name = mailstore1 last_valid_gid = 1001 last_valid_uid = 1001 lda_original_recipient_header = X-LDA-Original-To lmtp_rcpt_check_quota = yes login_greeting = ITronic Mail Store login_trusted_networks = 172.22.14.0/24 mail_attachment_dir = /srv/storage1/vmail_sis mail_attachment_hash = %{sha512} mail_attachment_min_size = 64 k mail_cache_min_mail_count = 5 mail_gid = vmail mail_location = mdbox:~/mdbox mail_plugins = zlib lazy_expunge stats acl quota mail_prefetch_count = 100 mail_server_admin = mailto:postmaster@itronic.at mail_server_comment = ITronic Mail System mail_shared_explicit_inbox = yes 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 mdbox_preallocate_space = yes namespace { hidden = yes list = no location = mdbox:~/mdbox:MAILBOXDIR=expunged prefix = "#EXPUNGED/" subscriptions = no type = private } namespace { list = children location = mdbox:%%h/mdbox prefix = "#Users/%%u/" separator = / subscriptions = yes type = shared } namespace inbox { hidden = no inbox = yes location = mailbox Archvie { special_use = \Archive } mailbox Drafts { special_use = \Drafts } mailbox Sent { special_use = \Sent } mailbox Spam { special_use = \Junk } mailbox Trash { special_use = \Trash } prefix = separator = / subscriptions = yes type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { acl = vfile acl_shared_dict = proxy::sqlacl last_login_dict = proxy::lastlogin last_login_key = last-login/%u lazy_expunge = "#EXPUNGED/" lazy_expunge_only_last_instance = no quota = dict:User quota::proxy::sqlquota quota_grace = 10%% quota_rule = *:storage=1024M quota_rule2 = "#EXPUNGED:storage=+100M" quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=80%% quota-warning 80 %u recipient_delimiter = + sieve = file:~/sieve;active=~/.dovecot.sieve sieve_global = /etc/dovecot/sieve sieve_max_actions = 64 sieve_max_redirects = 8 sieve_max_script_size = 2M sieve_quota_max_scripts = 0 sieve_quota_max_storage = 64M stats_refresh = 30 secs stats_track_cmds = yes zlib_save = gz zlib_save_level = 6 } pop3_uidl_duplicates = rename protocols = imap lmtp sieve pop3 sieve service auth-worker { user = $default_internal_user } service auth { inet_listener { port = 4180 } unix_listener auth-userdb { mode = 0666 } } service dict { unix_listener dict { group = vmail mode = 0666 } } service imap-hibernate { unix_listener imap-hibernate { group = vmail mode = 0666 } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } process_min_avail = 1 service_count = 0 } service imap { process_limit = 1024 unix_listener imap-master { user = dovecot } unix_listener imap { group = vmail mode = 0666 } vsz_limit = 512 M } service lmtp { inet_listener lmtp { address = 172.22.14.135 port = 24000 } unix_listener lmtp { mode = 0666 } } service managesieve-login { inet_listener sieve { port = 4190 } process_min_avail = 0 service_count = 1 vsz_limit = 64 M } service managesieve { process_limit = 50 } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } process_min_avail = 20 service_count = 1 vsz_limit = 64 M } service pop3 { process_limit = 1024 } service quota-warning { executable = script /opt/scripts/quota-warning.sh unix_listener quota-warning { user = vmail } user = dovecot } service stats { fifo_listener stats-mail { mode = 0600 user = vmail } } shutdown_clients = no ssl_cert = </etc/dovecot/private/STAR.itronic.at.pem ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA:CAMELLIA128-SHA:CAMELLIA256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA ssl_dh_parameters_length = 2048 ssl_key = </etc/dovecot/private/STAR.itronic.at.pem ssl_options = no_compression ssl_prefer_server_ciphers = yes ssl_protocols = !SSLv2 !SSLv3 submission_host = 172.22.14.198 syslog_facility = local0 userdb { driver = prefetch } userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } valid_chroot_dirs = /srv/storage1/vmail verbose_proctitle = yes protocol imap { mail_max_userip_connections = 20 mail_plugins = zlib lazy_expunge stats imap_stats quota imap_quota acl imap_acl last_login } protocol lda { mail_plugins = zlib lazy_expunge stats acl sieve quota } protocol lmtp { mail_plugins = zlib lazy_expunge stats acl sieve quota } protocol sieve { mail_max_userip_connections = 10 managesieve_max_compile_errors = 5 managesieve_max_line_length = 65536 } protocol pop3 { mail_max_userip_connections = 10 mail_plugins = zlib lazy_expunge stats acl last_login }
strace:
open("/srv/storage1/vmail/itronic/7/mdbox/storage/m.4184", O_RDWR) = 22 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 pread(22, "2 M1e C577baa0d\n\1\2N 000"..., 8192, 0) = 8192 flock(22, LOCK_EX|LOCK_NB) = 0 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/m.4184", {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 pread(19, "\1\2N 0000000000000BE3\n\37\213"..., 8192, 1889547) = 8192 pwrite(22, "\1\2N 0000000000000BE3\n\37\213"..., 3073, 38285) = 3073
....
pread(19, "\1\2N 00000000000003CA\n\37\213"..., 8192, 2095957) = 1078 pwrite(22, "\n\1\3\nZ1510\nR532d6d69\nV1574\nGc74fb"..., 1094, 244601) = 1094 pwrite(21, "\n\1\3\nZ62903b\nR576a94d0\nV63ea34\nG9"..., 632, 2094401) = 632 fdatasync(21) = 0 pwrite(20, "\n\1\3\nZ44ef\nR523ab092\nV467e\nG524f7"..., 94, 2095470) = 94 fdatasync(20) = 0 pwrite(22, "\n\1\3\nZ73b\nR570f7b1b\nV790\nGa658d91"..., 78, 245695) = 78 fdatasync(22) = 0 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/dovecot.map.index.log.2", {st_mode=S_IFREG|0644, st_size=37848, ...}) = 0 alarm(180) = 0 fcntl(17, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0 alarm(0) = 180 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/dovecot.map.index.log", {st_mode=S_IFREG|0644, st_size=5160, ...}) = 0 fstat(17, {st_mode=S_IFREG|0644, st_size=5160, ...}) = 0 write(2, "doveadm(lord@itronic.at): Panic:"..., 72doveadm(lord@itronic.at): Panic: file mdbox-map.c: line 1359: unreached ) = 72 open("/usr/lib/dovecot/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 23 fstat(23, {st_mode=S_IFREG|0644, st_size=17246, ...}) = 0 mmap(NULL, 17246, PROT_READ, MAP_PRIVATE, 23, 0) = 0x7f0033cca000 close(23) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 23 read(23, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260*\0\0\0\0\0\0"..., 832) = 832 fstat(23, {st_mode=S_IFREG|0644, st_size=90096, ...}) = 0 mmap(NULL, 2185952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 23, 0) = 0x7f002ed5b000 mprotect(0x7f002ed71000, 2093056, PROT_NONE) = 0 mmap(0x7f002ef70000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 23, 0x15000) = 0x7f002ef70000 close(23) = 0 munmap(0x7f0033cca000, 17246) = 0 futex(0x7f0032d9e190, FUTEX_WAKE_PRIVATE, 2147483647) = 0 futex(0x7f002ef70850, FUTEX_WAKE_PRIVATE, 2147483647) = 0 write(2, "doveadm(lord@itronic.at): Error:"..., 860doveadm(lord@itronic.at): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x8dc6e) [0x7f0032e2dc6e] -> /usr/lib/dovecot/libdovecot.so.0(+0x8dce8) [0x7f0032e2dce8] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f0032dcc02e] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_map_append_move+0x1ed) [0x7f003310cc0d] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_purge+0xfe3) [0x7f003310e103] -> doveadm(+0x29458) [0x7f0033a89458] -> doveadm(+0x2910f) [0x7f0033a8910f] -> doveadm(+0x29db4) [0x7f0033a89db4] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x278) [0x7f0033a8aae8] -> doveadm(doveadm_cmd_run_ver2+0x560) [0x7f0033a98fd0] -> doveadm(doveadm_cmd_try_run_ver2+0x37) [0x7f0033a99027] -> doveadm(main+0x1e4) [0x7f0033a7a414] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f0032a16b45] -> doveadm(+0x1a7ee) [0x7f0033a7a7ee] ) = 860 rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 tgkill(5682, 5682, SIGABRT) = 0 --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=5682, si_uid=0} --- +++ killed by SIGABRT +++ [1] 5679 abort strace doveadm purge -A
-- Harald Leithner
ITronic Wiedner Hauptstraße 120/5.1, 1050 Wien, Austria Tel: +43-1-545 0 604 Mobil: +43-699-123 78 4 78 Mail: leithner@itronic.at | itronic.at
On 12.07.2016 22:25, Harald Leithner wrote:
Hi,
I got a doveadm panic while running purge -A with 2.2.25
doveadm(x@itronic.at): Panic: file mdbox-map.c: line 1359: unreached doveadm(x@itronic.at): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x8dc6e) [0x7f2fe2022c6e] -> /usr/lib/dovecot/libdovecot.so.0(+0x8dce8) [0x7f2fe2022ce8] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f2fe1fc102e] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_map_append_move+0x1ed) [0x7f2fe2301c0d] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_purge+0xfe3) [0x7f2fe2303103] -> doveadm(+0x29458) [0x7f2fe2c7e458] -> doveadm(+0x2910f) [0x7f2fe2c7e10f] -> doveadm(+0x29db4) [0x7f2fe2c7edb4] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x278) [0x7f2fe2c7fae8] -> doveadm(doveadm_cmd_run_ver2+0x560) [0x7f2fe2c8dfd0] -> doveadm(doveadm_cmd_try_run_ver2+0x37) [0x7f2fe2c8e027] -> doveadm(main+0x1e4) [0x7f2fe2c6f414] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f2fe1c0bb45] -> doveadm(+0x1a7ee) [0x7f2fe2c6f7ee]
The command was run in a cleanup script that expunge old mails from the lazy-plugin.
#!/bin/sh
# Permanently expunge old Trash doveadm expunge -A -d mailbox '#EXPUNGED/*' savedbefore 2w
# Optimize mdbox storage and sis storage doveadm purge -A
After rerunning the command it fails again.
stace could be found after config.
config: # 2.2.devel (6d2fa6b): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.devel (3f51b82) # OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.5 auth_cache_negative_ttl = 1 secs auth_cache_size = 10 M auth_cache_ttl = 1 secs auth_mechanisms = PLAIN LOGIN DIGEST-MD5 SCRAM-SHA-1 CRAM-MD5 APOP auth_verbose = yes default_client_limit = 600 default_vsz_limit = 512 M dict { lastlogin = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext sqlacl = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext } disable_plaintext_auth = no first_valid_gid = 1001 first_valid_uid = 1001 hostname = mailstore1@itronic.at imap_hibernate_timeout = 1 mins imap_id_log = * imap_id_send = * imap_idle_notify_interval = 10 mins instance_name = mailstore1 last_valid_gid = 1001 last_valid_uid = 1001 lda_original_recipient_header = X-LDA-Original-To lmtp_rcpt_check_quota = yes login_greeting = ITronic Mail Store login_trusted_networks = 172.22.14.0/24 mail_attachment_dir = /srv/storage1/vmail_sis mail_attachment_hash = %{sha512} mail_attachment_min_size = 64 k mail_cache_min_mail_count = 5 mail_gid = vmail mail_location = mdbox:~/mdbox mail_plugins = zlib lazy_expunge stats acl quota mail_prefetch_count = 100 mail_server_admin = mailto:postmaster@itronic.at mail_server_comment = ITronic Mail System mail_shared_explicit_inbox = yes 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 mdbox_preallocate_space = yes namespace { hidden = yes list = no location = mdbox:~/mdbox:MAILBOXDIR=expunged prefix = "#EXPUNGED/" subscriptions = no type = private } namespace { list = children location = mdbox:%%h/mdbox prefix = "#Users/%%u/" separator = / subscriptions = yes type = shared } namespace inbox { hidden = no inbox = yes location = mailbox Archvie { special_use = \Archive } mailbox Drafts { special_use = \Drafts } mailbox Sent { special_use = \Sent } mailbox Spam { special_use = \Junk } mailbox Trash { special_use = \Trash } prefix = separator = / subscriptions = yes type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { acl = vfile acl_shared_dict = proxy::sqlacl last_login_dict = proxy::lastlogin last_login_key = last-login/%u lazy_expunge = "#EXPUNGED/" lazy_expunge_only_last_instance = no quota = dict:User quota::proxy::sqlquota quota_grace = 10%% quota_rule = *:storage=1024M quota_rule2 = "#EXPUNGED:storage=+100M" quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=80%% quota-warning 80 %u recipient_delimiter = + sieve = file:~/sieve;active=~/.dovecot.sieve sieve_global = /etc/dovecot/sieve sieve_max_actions = 64 sieve_max_redirects = 8 sieve_max_script_size = 2M sieve_quota_max_scripts = 0 sieve_quota_max_storage = 64M stats_refresh = 30 secs stats_track_cmds = yes zlib_save = gz zlib_save_level = 6 } pop3_uidl_duplicates = rename protocols = imap lmtp sieve pop3 sieve service auth-worker { user = $default_internal_user } service auth { inet_listener { port = 4180 } unix_listener auth-userdb { mode = 0666 } } service dict { unix_listener dict { group = vmail mode = 0666 } } service imap-hibernate { unix_listener imap-hibernate { group = vmail mode = 0666 } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } process_min_avail = 1 service_count = 0 } service imap { process_limit = 1024 unix_listener imap-master { user = dovecot } unix_listener imap { group = vmail mode = 0666 } vsz_limit = 512 M } service lmtp { inet_listener lmtp { address = 172.22.14.135 port = 24000 } unix_listener lmtp { mode = 0666 } } service managesieve-login { inet_listener sieve { port = 4190 } process_min_avail = 0 service_count = 1 vsz_limit = 64 M } service managesieve { process_limit = 50 } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } process_min_avail = 20 service_count = 1 vsz_limit = 64 M } service pop3 { process_limit = 1024 } service quota-warning { executable = script /opt/scripts/quota-warning.sh unix_listener quota-warning { user = vmail } user = dovecot } service stats { fifo_listener stats-mail { mode = 0600 user = vmail } } shutdown_clients = no ssl_cert = </etc/dovecot/private/STAR.itronic.at.pem ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA:CAMELLIA128-SHA:CAMELLIA256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA ssl_dh_parameters_length = 2048 ssl_key = </etc/dovecot/private/STAR.itronic.at.pem ssl_options = no_compression ssl_prefer_server_ciphers = yes ssl_protocols = !SSLv2 !SSLv3 submission_host = 172.22.14.198 syslog_facility = local0 userdb { driver = prefetch } userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } valid_chroot_dirs = /srv/storage1/vmail verbose_proctitle = yes protocol imap { mail_max_userip_connections = 20 mail_plugins = zlib lazy_expunge stats imap_stats quota imap_quota acl imap_acl last_login } protocol lda { mail_plugins = zlib lazy_expunge stats acl sieve quota } protocol lmtp { mail_plugins = zlib lazy_expunge stats acl sieve quota } protocol sieve { mail_max_userip_connections = 10 managesieve_max_compile_errors = 5 managesieve_max_line_length = 65536 } protocol pop3 { mail_max_userip_connections = 10 mail_plugins = zlib lazy_expunge stats acl last_login }
strace:
open("/srv/storage1/vmail/itronic/7/mdbox/storage/m.4184", O_RDWR) = 22 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 pread(22, "2 M1e C577baa0d\n\1\2N 000"..., 8192, 0) = 8192 flock(22, LOCK_EX|LOCK_NB) = 0 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/m.4184", {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 pread(19, "\1\2N 0000000000000BE3\n\37\213"..., 8192, 1889547) = 8192 pwrite(22, "\1\2N 0000000000000BE3\n\37\213"..., 3073, 38285) = 3073
....
pread(19, "\1\2N 00000000000003CA\n\37\213"..., 8192, 2095957) = 1078 pwrite(22, "\n\1\3\nZ1510\nR532d6d69\nV1574\nGc74fb"..., 1094, 244601) = 1094 pwrite(21, "\n\1\3\nZ62903b\nR576a94d0\nV63ea34\nG9"..., 632, 2094401) = 632 fdatasync(21) = 0 pwrite(20, "\n\1\3\nZ44ef\nR523ab092\nV467e\nG524f7"..., 94, 2095470) = 94 fdatasync(20) = 0 pwrite(22, "\n\1\3\nZ73b\nR570f7b1b\nV790\nGa658d91"..., 78, 245695) = 78 fdatasync(22) = 0 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/dovecot.map.index.log.2", {st_mode=S_IFREG|0644, st_size=37848, ...}) = 0 alarm(180) = 0 fcntl(17, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0 alarm(0) = 180 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/dovecot.map.index.log", {st_mode=S_IFREG|0644, st_size=5160, ...}) = 0 fstat(17, {st_mode=S_IFREG|0644, st_size=5160, ...}) = 0 write(2, "doveadm(lord@itronic.at): Panic:"..., 72doveadm(lord@itronic.at): Panic: file mdbox-map.c: line 1359: unreached ) = 72 open("/usr/lib/dovecot/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 23 fstat(23, {st_mode=S_IFREG|0644, st_size=17246, ...}) = 0 mmap(NULL, 17246, PROT_READ, MAP_PRIVATE, 23, 0) = 0x7f0033cca000 close(23) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 23 read(23, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260*\0\0\0\0\0\0"..., 832) = 832 fstat(23, {st_mode=S_IFREG|0644, st_size=90096, ...}) = 0 mmap(NULL, 2185952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 23, 0) = 0x7f002ed5b000 mprotect(0x7f002ed71000, 2093056, PROT_NONE) = 0 mmap(0x7f002ef70000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 23, 0x15000) = 0x7f002ef70000 close(23) = 0 munmap(0x7f0033cca000, 17246) = 0 futex(0x7f0032d9e190, FUTEX_WAKE_PRIVATE, 2147483647) = 0 futex(0x7f002ef70850, FUTEX_WAKE_PRIVATE, 2147483647) = 0 write(2, "doveadm(lord@itronic.at): Error:"..., 860doveadm(lord@itronic.at): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x8dc6e) [0x7f0032e2dc6e] -> /usr/lib/dovecot/libdovecot.so.0(+0x8dce8) [0x7f0032e2dce8] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f0032dcc02e] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_map_append_move+0x1ed) [0x7f003310cc0d] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_purge+0xfe3) [0x7f003310e103] -> doveadm(+0x29458) [0x7f0033a89458] -> doveadm(+0x2910f) [0x7f0033a8910f] -> doveadm(+0x29db4) [0x7f0033a89db4] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x278) [0x7f0033a8aae8] -> doveadm(doveadm_cmd_run_ver2+0x560) [0x7f0033a98fd0] -> doveadm(doveadm_cmd_try_run_ver2+0x37) [0x7f0033a99027] -> doveadm(main+0x1e4) [0x7f0033a7a414] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f0032a16b45] -> doveadm(+0x1a7ee) [0x7f0033a7a7ee] ) = 860 rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 tgkill(5682, 5682, SIGABRT) = 0 --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=5682, si_uid=0} --- +++ killed by SIGABRT +++ [1] 5679 abort strace doveadm purge -A
Hi!
We are looking into this, thank you for your report!
Aki Tuomi Dovecot oy
On 12.07.2016 22:25, Harald Leithner wrote:
Hi,
I got a doveadm panic while running purge -A with 2.2.25
doveadm(x@itronic.at): Panic: file mdbox-map.c: line 1359: unreached doveadm(x@itronic.at): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x8dc6e) [0x7f2fe2022c6e] -> /usr/lib/dovecot/libdovecot.so.0(+0x8dce8) [0x7f2fe2022ce8] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f2fe1fc102e] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_map_append_move+0x1ed) [0x7f2fe2301c0d] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_purge+0xfe3) [0x7f2fe2303103] -> doveadm(+0x29458) [0x7f2fe2c7e458] -> doveadm(+0x2910f) [0x7f2fe2c7e10f] -> doveadm(+0x29db4) [0x7f2fe2c7edb4] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x278) [0x7f2fe2c7fae8] -> doveadm(doveadm_cmd_run_ver2+0x560) [0x7f2fe2c8dfd0] -> doveadm(doveadm_cmd_try_run_ver2+0x37) [0x7f2fe2c8e027] -> doveadm(main+0x1e4) [0x7f2fe2c6f414] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f2fe1c0bb45] -> doveadm(+0x1a7ee) [0x7f2fe2c6f7ee]
The command was run in a cleanup script that expunge old mails from the lazy-plugin.
#!/bin/sh
# Permanently expunge old Trash doveadm expunge -A -d mailbox '#EXPUNGED/*' savedbefore 2w
# Optimize mdbox storage and sis storage doveadm purge -A
After rerunning the command it fails again.
stace could be found after config.
config: # 2.2.devel (6d2fa6b): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.devel (3f51b82) # OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.5 auth_cache_negative_ttl = 1 secs auth_cache_size = 10 M auth_cache_ttl = 1 secs auth_mechanisms = PLAIN LOGIN DIGEST-MD5 SCRAM-SHA-1 CRAM-MD5 APOP auth_verbose = yes default_client_limit = 600 default_vsz_limit = 512 M dict { lastlogin = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext sqlacl = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext } disable_plaintext_auth = no first_valid_gid = 1001 first_valid_uid = 1001 hostname = mailstore1@itronic.at imap_hibernate_timeout = 1 mins imap_id_log = * imap_id_send = * imap_idle_notify_interval = 10 mins instance_name = mailstore1 last_valid_gid = 1001 last_valid_uid = 1001 lda_original_recipient_header = X-LDA-Original-To lmtp_rcpt_check_quota = yes login_greeting = ITronic Mail Store login_trusted_networks = 172.22.14.0/24 mail_attachment_dir = /srv/storage1/vmail_sis mail_attachment_hash = %{sha512} mail_attachment_min_size = 64 k mail_cache_min_mail_count = 5 mail_gid = vmail mail_location = mdbox:~/mdbox mail_plugins = zlib lazy_expunge stats acl quota mail_prefetch_count = 100 mail_server_admin = mailto:postmaster@itronic.at mail_server_comment = ITronic Mail System mail_shared_explicit_inbox = yes 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 mdbox_preallocate_space = yes namespace { hidden = yes list = no location = mdbox:~/mdbox:MAILBOXDIR=expunged prefix = "#EXPUNGED/" subscriptions = no type = private } namespace { list = children location = mdbox:%%h/mdbox prefix = "#Users/%%u/" separator = / subscriptions = yes type = shared } namespace inbox { hidden = no inbox = yes location = mailbox Archvie { special_use = \Archive } mailbox Drafts { special_use = \Drafts } mailbox Sent { special_use = \Sent } mailbox Spam { special_use = \Junk } mailbox Trash { special_use = \Trash } prefix = separator = / subscriptions = yes type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { acl = vfile acl_shared_dict = proxy::sqlacl last_login_dict = proxy::lastlogin last_login_key = last-login/%u lazy_expunge = "#EXPUNGED/" lazy_expunge_only_last_instance = no quota = dict:User quota::proxy::sqlquota quota_grace = 10%% quota_rule = *:storage=1024M quota_rule2 = "#EXPUNGED:storage=+100M" quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=80%% quota-warning 80 %u recipient_delimiter = + sieve = file:~/sieve;active=~/.dovecot.sieve sieve_global = /etc/dovecot/sieve sieve_max_actions = 64 sieve_max_redirects = 8 sieve_max_script_size = 2M sieve_quota_max_scripts = 0 sieve_quota_max_storage = 64M stats_refresh = 30 secs stats_track_cmds = yes zlib_save = gz zlib_save_level = 6 } pop3_uidl_duplicates = rename protocols = imap lmtp sieve pop3 sieve service auth-worker { user = $default_internal_user } service auth { inet_listener { port = 4180 } unix_listener auth-userdb { mode = 0666 } } service dict { unix_listener dict { group = vmail mode = 0666 } } service imap-hibernate { unix_listener imap-hibernate { group = vmail mode = 0666 } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } process_min_avail = 1 service_count = 0 } service imap { process_limit = 1024 unix_listener imap-master { user = dovecot } unix_listener imap { group = vmail mode = 0666 } vsz_limit = 512 M } service lmtp { inet_listener lmtp { address = 172.22.14.135 port = 24000 } unix_listener lmtp { mode = 0666 } } service managesieve-login { inet_listener sieve { port = 4190 } process_min_avail = 0 service_count = 1 vsz_limit = 64 M } service managesieve { process_limit = 50 } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } process_min_avail = 20 service_count = 1 vsz_limit = 64 M } service pop3 { process_limit = 1024 } service quota-warning { executable = script /opt/scripts/quota-warning.sh unix_listener quota-warning { user = vmail } user = dovecot } service stats { fifo_listener stats-mail { mode = 0600 user = vmail } } shutdown_clients = no ssl_cert = </etc/dovecot/private/STAR.itronic.at.pem ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA:CAMELLIA128-SHA:CAMELLIA256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA ssl_dh_parameters_length = 2048 ssl_key = </etc/dovecot/private/STAR.itronic.at.pem ssl_options = no_compression ssl_prefer_server_ciphers = yes ssl_protocols = !SSLv2 !SSLv3 submission_host = 172.22.14.198 syslog_facility = local0 userdb { driver = prefetch } userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } valid_chroot_dirs = /srv/storage1/vmail verbose_proctitle = yes protocol imap { mail_max_userip_connections = 20 mail_plugins = zlib lazy_expunge stats imap_stats quota imap_quota acl imap_acl last_login } protocol lda { mail_plugins = zlib lazy_expunge stats acl sieve quota } protocol lmtp { mail_plugins = zlib lazy_expunge stats acl sieve quota } protocol sieve { mail_max_userip_connections = 10 managesieve_max_compile_errors = 5 managesieve_max_line_length = 65536 } protocol pop3 { mail_max_userip_connections = 10 mail_plugins = zlib lazy_expunge stats acl last_login }
strace:
open("/srv/storage1/vmail/itronic/7/mdbox/storage/m.4184", O_RDWR) = 22 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 pread(22, "2 M1e C577baa0d\n\1\2N 000"..., 8192, 0) = 8192 flock(22, LOCK_EX|LOCK_NB) = 0 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/m.4184", {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 fstat(22, {st_mode=S_IFREG|0644, st_size=38285, ...}) = 0 pread(19, "\1\2N 0000000000000BE3\n\37\213"..., 8192, 1889547) = 8192 pwrite(22, "\1\2N 0000000000000BE3\n\37\213"..., 3073, 38285) = 3073
....
pread(19, "\1\2N 00000000000003CA\n\37\213"..., 8192, 2095957) = 1078 pwrite(22, "\n\1\3\nZ1510\nR532d6d69\nV1574\nGc74fb"..., 1094, 244601) = 1094 pwrite(21, "\n\1\3\nZ62903b\nR576a94d0\nV63ea34\nG9"..., 632, 2094401) = 632 fdatasync(21) = 0 pwrite(20, "\n\1\3\nZ44ef\nR523ab092\nV467e\nG524f7"..., 94, 2095470) = 94 fdatasync(20) = 0 pwrite(22, "\n\1\3\nZ73b\nR570f7b1b\nV790\nGa658d91"..., 78, 245695) = 78 fdatasync(22) = 0 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/dovecot.map.index.log.2", {st_mode=S_IFREG|0644, st_size=37848, ...}) = 0 alarm(180) = 0 fcntl(17, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0 alarm(0) = 180 stat("/srv/storage1/vmail/itronic/7/mdbox/storage/dovecot.map.index.log", {st_mode=S_IFREG|0644, st_size=5160, ...}) = 0 fstat(17, {st_mode=S_IFREG|0644, st_size=5160, ...}) = 0 write(2, "doveadm(lord@itronic.at): Panic:"..., 72doveadm(lord@itronic.at): Panic: file mdbox-map.c: line 1359: unreached ) = 72 open("/usr/lib/dovecot/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 23 fstat(23, {st_mode=S_IFREG|0644, st_size=17246, ...}) = 0 mmap(NULL, 17246, PROT_READ, MAP_PRIVATE, 23, 0) = 0x7f0033cca000 close(23) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 23 read(23, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260*\0\0\0\0\0\0"..., 832) = 832 fstat(23, {st_mode=S_IFREG|0644, st_size=90096, ...}) = 0 mmap(NULL, 2185952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 23, 0) = 0x7f002ed5b000 mprotect(0x7f002ed71000, 2093056, PROT_NONE) = 0 mmap(0x7f002ef70000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 23, 0x15000) = 0x7f002ef70000 close(23) = 0 munmap(0x7f0033cca000, 17246) = 0 futex(0x7f0032d9e190, FUTEX_WAKE_PRIVATE, 2147483647) = 0 futex(0x7f002ef70850, FUTEX_WAKE_PRIVATE, 2147483647) = 0 write(2, "doveadm(lord@itronic.at): Error:"..., 860doveadm(lord@itronic.at): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x8dc6e) [0x7f0032e2dc6e] -> /usr/lib/dovecot/libdovecot.so.0(+0x8dce8) [0x7f0032e2dce8] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f0032dcc02e] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_map_append_move+0x1ed) [0x7f003310cc0d] -> /usr/lib/dovecot/libdovecot-storage.so.0(mdbox_purge+0xfe3) [0x7f003310e103] -> doveadm(+0x29458) [0x7f0033a89458] -> doveadm(+0x2910f) [0x7f0033a8910f] -> doveadm(+0x29db4) [0x7f0033a89db4] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x278) [0x7f0033a8aae8] -> doveadm(doveadm_cmd_run_ver2+0x560) [0x7f0033a98fd0] -> doveadm(doveadm_cmd_try_run_ver2+0x37) [0x7f0033a99027] -> doveadm(main+0x1e4) [0x7f0033a7a414] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f0032a16b45] -> doveadm(+0x1a7ee) [0x7f0033a7a7ee] ) = 860 rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 tgkill(5682, 5682, SIGABRT) = 0 --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=5682, si_uid=0} --- +++ killed by SIGABRT +++ [1] 5679 abort strace doveadm purge -A
Hi!
I tried replicating your issue but was unable to. Is this issue in any way reproducable anymore? If yes, can you provide us with output of bt full from gdb?
Aki Tuomi Dovecot oy
participants (2)
-
Aki Tuomi
-
Harald Leithner