Hi,
I got a doveadm panic while running purge -A with 2.2.25
doveadm(x(a)itronic.at): Panic: file mdbox-map.c: line 1359: unreached
doveadm(x(a)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(a)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(a)itronic.at): Panic:"...,
72doveadm(lord(a)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(a)itronic.at): Error:"...,
860doveadm(lord(a)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(a)itronic.at | itronic.at