dsync panic in mbox_lock

Emmanuel Dreyfus
Sat, 16 Sep 2017 02:28:24 -0000

Hello

I am trying to setup replication with dovecot-2.2.29.1, and for some
users, I get a reproductible panic:

# doveadm -v -o plugin/mail_replica=remoteprefix:root at mail2.example.net
sync -d  -u jdoe
dsync-local(jdoe): Panic: file mbox-lock.c: line 799 (mbox_lock):
assertion failed: (lock_type == F_RDLCK || mbox->mbox_lock_type !F_RDLCK)
Abort

User is not overquota, and filesystem permissions are correct.

kernel trace shows it happens just after a stat() on INBOX/dovecot.ind
ex.log. Here is doveadm backtrace:

#0  0x00007f7ff650e6fa in _lwp_kill () from /lib/libc.so.12
#1  0x00007f7ff650e385 in abort () from /lib/libc.so.12
#2  0x00007f7ff6c91acc in default_fatal_finish ()
   from /usr/pkg/lib/dovecot/libdovecot.so.0
#3  0x00007f7ff6c91b4a in default_fatal_handler ()
   from /usr/pkg/lib/dovecot/libdovecot.so.0
#4  0x00007f7ff6cbcb9b in i_panic () from
/usr/pkg/lib/dovecot/libdovecot.so.0
#5  0x00007f7ff7076721 in mbox_lock ()
   from /usr/pkg/lib/dovecot/libdovecot-storage.so.0
#6  0x00007f7ff7077da7 in mbox_save_begin ()
   from /usr/pkg/lib/dovecot/libdovecot-storage.so.0
#7  0x00007f7ff580c3f8 in quota_save_begin ()
   from /usr/pkg/lib/dovecot/lib10_quota_plugin.so
#8  0x00007f7ff7047f63 in mailbox_save_begin ()
   from /usr/pkg/lib/dovecot/libdovecot-storage.so.0
#9  0x00007f7ff703d983 in mail_storage_copy ()
   from /usr/pkg/lib/dovecot/libdovecot-storage.so.0
#10 0x00007f7ff5401f10 in notify_copy ()
   from /usr/pkg/lib/dovecot/lib15_notify_plugin.so
#11 0x00007f7ff580c259 in quota_copy ()
   from /usr/pkg/lib/dovecot/lib10_quota_plugin.so
#12 0x00007f7ff70480f8 in mailbox_copy_int ()
   from /usr/pkg/lib/dovecot/libdovecot-storage.so.0
#13 0x00007f7ff70482a5 in mailbox_move ()
   from /usr/pkg/lib/dovecot/libdovecot-storage.so.0
#14 0x000000000043a118 in ?? ()
#15 0x000000000043b465 in ?? ()
#16 0x000000000043db03 in dsync_mailbox_import_changes_finish ()
#17 0x000000000043906c in dsync_brain_sync_mails ()
#18 0x0000000000434e4d in dsync_brain_run ()
#19 0x000000000043514b in ?? ()
#20 0x0000000000447ca9 in ?? ()
#21 0x00007f7ff6ca3e65 in io_loop_call_io ()
   from /usr/pkg/lib/dovecot/libdovecot.so.0
#22 0x00007f7ff6ca5179 in io_loop_handler_run_internal ()
   from /usr/pkg/lib/dovecot/libdovecot.so.0
#23 0x00007f7ff6ca3efa in io_loop_handler_run ()
   from /usr/pkg/lib/dovecot/libdovecot.so.0
#24 0x00007f7ff6ca4099 in io_loop_run ()
   from /usr/pkg/lib/dovecot/libdovecot.so.0
#25 0x00000000004205b2 in ?? ()
#26 0x0000000000422754 in ?? ()
#27 0x0000000000423074 in ?? ()
#28 0x00000000004238d1 in doveadm_mail_try_run ()
#29 0x000000000045182a in main ()

Any hint?

--
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu at netbsd.org