dsync: assert panic on mbox // no INBOX sync on hybrid mbox/maildir
David Gardner
somloieater at gmail.com
Wed Sep 27 13:47:37 EEST 2017
Hi,
replying to my own issue:
The dsync crash seems to be triggered when there are emails to copy in
both directions, and it's fairly clear from comments in the code that
it should be releasing a read lock before trying to grab a write lock.
A work-around for the crash was doing a one-way sync manually. This
allowed the process to complete and my setup is now replicating
properly. I guess as long as I don't trigger changes on both hosts
David
On 26 September 2017 at 22:39, David Gardner <somloieater at gmail.com> wrote:
> Hi,
> This (hopefully!) might be a case of user error, as I'm new to
> dovecot... Alternatively it might be some confusion in an index, since
> I've been mucking about trying different things in my configuration
> files and had frequent crashes.
>
> I'm trying to sync 2 (LAN) hosts, ideally to have full automatic
> replication happening.
>
> They both have hybrid mbox INBOX and maildir++ folders, using
> namespaces, as suggested in the wiki. I might have deviated the config
> from the wiki version, in trying to get things working.
>
> Both hosts communicate perfectly with an external IMAP client (thunderbird).
> Replication is working, but only partially - it is syncing the folders
> but not INBOX. I've thus been trying various things to try to get the
> INBOX to sync.
>
> The crash is only happening one of the 2 hosts which I've named
> crashhost for this report. The process crashes no matter which host
> starts the sync.
> With a second user, the crash happens on the other host
>
> crashhost: Ubuntu 16.04, x86_64, laptop, Dovecot 2.2.22, and Dovecot
> 2.2.32 (from debian sid package, locally compiled)
> otherhost: Ubuntu 16.04, x86_64, desktop, Dovecot 2.2.22, and Dovecot
> 2.2.32 (from debian sid package, locally compiled)
>
>
> RESULTS:
>
> 1) doveadm sync -f -u david tcp:otherhost
> synchronises the folders, but does not touch INBOXes.
>
> 2) doveadm sync -f -m INBOX -u david tcp:otherhost
> Does not touch INBOXes
>
> 3) doveadm sync -n '#mbox/' -f -u david tcp:otherhost
> dsync-local(david): Panic: file mbox-lock.c: line 800 (mbox_lock):
> assertion failed: (lock_type == F_RDLCK || mbox->mbox_lock_type !=
> F_RDLCK)
>
> I added some debug code, the assertion failure is being triggered by a
> call to mbox-lock() with:
> locktype=F_WRCLK mbox->mbox_lock_type=F_RDLCK, mbox->external_transactions=1
>
> The config files on the 2 hosts only differ by the hostnames they're
> supposed to be syncing to.
>
> $ dovecot -n
> # 2.2.32 (dfbe293d4): /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.4.20 (7cd71ba)
> # OS: Linux 4.10.0-35-generic x86_64 Ubuntu 16.04.3 LTS
> doveadm_password = # hidden, use -P to show it
> doveadm_port = 12346
> imapc_host = crashhost
> imapc_password = # hidden, use -P to show it
> imapc_port = 993
> imapc_ssl = imaps
> imapc_ssl_verify = no
> imapc_user = %u
> mail_location = maildir:~/mail
> mail_plugins = " notify replication"
> mail_privileged_group = mail
> namespace {
> inbox = no
> list = yes
> location =
> prefix =
> separator = /
> subscriptions = yes
> }
> namespace inbox {
> hidden = yes
> inbox = yes
> list = no
> location = mbox:~/nomail:INBOX=/var/mail/%u:INDEX=/var/spool/mailindex/%u
> mailbox Drafts {
> special_use = \Drafts
> }
> mailbox Junk {
> special_use = \Junk
> }
> mailbox Sent {
> special_use = \Sent
> }
> mailbox "Sent Messages" {
> special_use = \Sent
> }
> mailbox Trash {
> special_use = \Trash
> }
> prefix = "#mbox/"
> separator = /
> type = private
> }
> passdb {
> args = scheme=CRYPT username_format=%u /etc/dovecot/users
> driver = passwd-file
> }
> plugin {
> mail_replica = tcp:otherhost:12346
> }
> protocols = " imap"
> service aggregator {
> fifo_listener replication-notify-fifo {
> mode = 0666
> user = vmail
> }
> unix_listener replication-notify {
> mode = 0666
> user = vmail
> }
> }
> service config {
> unix_listener config {
> user = vmail
> }
> }
> service doveadm {
> inet_listener {
> port = 12346
> }
> user = root
> }
> service replicator {
> process_min_avail = 1
> unix_listener replicator-doveadm {
> mode = 0666
> }
> }
> ssl = required
> ssl_cert = </etc/dovecot/dovecot.pem
> ssl_client_ca_dir = /etc/ssl
> ssl_key = # hidden, use -P to show it
> userdb {
> args = username_format=%u /etc/dovecot/users
> driver = passwd-file
> }
>
> gdb) bt
> #0 0x00007f37f426e428 in __GI_raise (sig=sig at entry=6) at
> ../sysdeps/unix/sysv/linux/raise.c:54
> #1 0x00007f37f427002a in __GI_abort () at abort.c:89
> #2 0x00007f37f469f7aa in ?? () from /usr/lib/dovecot/libdovecot.so.0
> #3 0x00007f37f469f829 in default_fatal_handler () from
> /usr/lib/dovecot/libdovecot.so.0
> #4 0x00007f37f46302a1 in i_panic () from /usr/lib/dovecot/libdovecot.so.0
> #5 0x00007f37f49ac235 in mbox_lock () from
> /usr/lib/dovecot/libdovecot-storage.so.0
> #6 0x00007f37f49adb11 in mbox_save_begin () from
> /usr/lib/dovecot/libdovecot-storage.so.0
> #7 0x00007f37f49769a1 in mailbox_save_begin () from
> /usr/lib/dovecot/libdovecot-storage.so.0
> #8 0x00007f37f496a2e8 in mail_storage_copy () from
> /usr/lib/dovecot/libdovecot-storage.so.0
> #9 0x00007f37f3e332a5 in ?? () from
> /usr/lib/dovecot/modules/lib15_notify_plugin.so
> #10 0x00007f37f4976b73 in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0
> #11 0x00007f37f4976d89 in mailbox_move () from
> /usr/lib/dovecot/libdovecot-storage.so.0
> #12 0x000055b45f0da448 in ?? ()
> #13 0x000055b45f0db35a in ?? ()
> #14 0x000055b45f0ddbc0 in dsync_mailbox_import_changes_finish ()
> #15 0x000055b45f0d8645 in dsync_brain_sync_mails ()
> #16 0x000055b45f0d3df8 in dsync_brain_run ()
> #17 0x000055b45f0d4140 in ?? ()
> #18 0x000055b45f0ea3ff in ?? ()
> #19 0x00007f37f46b4c82 in io_loop_call_io () from
> /usr/lib/dovecot/libdovecot.so.0
> #20 0x00007f37f46b6309 in io_loop_handler_run_internal () from
> /usr/lib/dovecot/libdovecot.so.0
> #21 0x00007f37f46b4d1c in io_loop_handler_run () from
> /usr/lib/dovecot/libdovecot.so.0
> #22 0x00007f37f46b4ec8 in io_loop_run () from /usr/lib/dovecot/libdovecot.so.0
> #23 0x000055b45f0bb4c2 in ?? ()
> #24 0x000055b45f0bd91c in ?? ()
> #25 0x000055b45f0be5aa in ?? ()
> #26 0x000055b45f0beeda in doveadm_mail_try_run ()
> #27 0x000055b45f0ae47c in main ()
More information about the dovecot
mailing list