Javier Miguel RodrÃguez
2011-Mar-01 07:18 UTC
[Dovecot] Error purging mdbox (damaged) mailbox
We are stress testing our preproduction system. One of the "evil" tests we made was putting our mailboxes filesystem in read-only in the middle of smtp(+lda) delivery. When we try to purge one of the affected mailboxes we get error like the followings: / doveadm(lbandera at mysite): Panic: file mdbox-purge.c: line 225 (mdbox_purge_save_msg): assertion failed: (ret == (off_t)msg_size) doveadm(lbandera at mysite): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0 [0x3b0943bab0] -> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x35) [0x3b0943bb95] -> /usr/lib64/dovecot/libdovecot.so.0 [0x3b0943b4c3] -> /usr/lib64/dovecot/libdovecot-storage.so.0(mdbox_purge+0xe83) [0x3b0986f0c3] -> /usr/bin/doveadm [0x408d65] -> /usr/bin/doveadm [0x4093c1] -> /usr/bin/doveadm(doveadm_mail_single_user+0x9d) [0x4094ed] -> /usr/bin/doveadm [0x4096fe] -> /usr/bin/doveadm(doveadm_mail_try_run+0xb7) [0x409b37] -> /usr/bin/doveadm(main+0x2fc) [0x40dddc] -> /lib64/libc.so.6(__libc_start_main+0xf4) [0x3b0881d994] -> /usr/bin/doveadm [0x408c39]/ / doveadm(leonvela at mysite): Panic: file mdbox-purge.c: line 225 (mdbox_purge_save_msg): assertion failed: (ret == (off_t)msg_size) doveadm(leonvela at mysite): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0 [0x3b0943bab0] -> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x35) [0x3b0943bb95] -> /usr/lib64/dovecot/libdovecot.so.0 [0x3b0943b4c3] -> /usr/lib64/dovecot/libdovecot-storage.so.0(mdbox_purge+0xe83) [0x3b0986f0c3] -> /usr/bin/doveadm [0x408d65] -> /usr/bin/doveadm [0x4093c1] -> /usr/bin/doveadm(doveadm_mail_single_user+0x9d) [0x4094ed] -> /usr/bin/doveadm [0x4096fe] -> /usr/bin/doveadm(doveadm_mail_try_run+0xb7) [0x409b37] -> /usr/bin/doveadm(main+0x2fc) [0x40dddc] -> /lib64/libc.so.6(__libc_start_main+0xf4) [0x3b0881d994] -> /usr/bin/doveadm [0x408c39]/ The mailboxes are damaged, but maybe doveadm should not crash on them, should handle the error more gracefully and exit with a error status. Regards Javier
On Tue, 2011-03-01 at 08:18 +0100, Javier Miguel Rodr?guez wrote:> doveadm(lbandera at mysite): Panic: file mdbox-purge.c: line 225 > (mdbox_purge_save_msg): assertion failed: (ret == (off_t)msg_size)Fixed this: http://hg.dovecot.org/dovecot-2.0/rev/989f3990b254 Also found a related bug: http://hg.dovecot.org/dovecot-2.0/rev/fe144ecec678