Autoexpunge is not working with dotlock locking
Hello,
Autoexpunge is not working when used with dotlock locking. It seems to been broken since version 2.2.28.
When autoexpunge is enabled and mailbox locking is set to dotlock all imap, pop and lmtp connections crash with the same error "file file-lock.c: line 287: unreached".
Connected to localhost. Escape character is '^]'.
- OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] Dovecot ready. X LOGIN testuser password X OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE LITERAL+ NOTIFY] Logged in X LOGOUT
- BYE Logging out X OK Logout completed (0.001 + 0.000 secs). Connection closed by foreign host.
=>
Jan 22 09:25:55 dovecottest dovecot: imap-login: Login: user=<testuser>, method=PLAIN, rip=::1, lip=::1, mpid=8274, secured, session=<EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB> Jan 22 09:25:57 dovecottest dovecot: imap(testuser)<8274><EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB>: Panic: file file-lock.c: line 287: unreached Jan 22 09:25:57 dovecottest dovecot: imap(testuser)<8274><EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB>: Error: Raw backtrace: /usr/local/lib/dovecot/libdovecot.so.0(+0xc8d24) [0x7ff43bef5d24] -> /usr/local/lib/dovecot/libdovecot.so.0(+0xc8dde) [0x7ff43bef5dde] -> /usr/local/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7ff43be69190] -> /usr/local/lib/dovecot/libdovecot.so.0(+0xcd8ff) [0x7ff43befa8ff] -> /usr/local/lib/dovecot/libdovecot.so.0(file_wait_lock_error+0x26) [0x7ff43befac46] -> /usr/local/lib/dovecot/libdovecot.so.0(file_try_lock_error+0x13) [0x7ff43befacc3] -> /usr/local/lib/dovecot/libdovecot.so.0(file_create_locked+0x253) [0x7ff43bef7df3] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mail_user_lock_file_create+0xc5) [0x7ff43c1f5f15] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mail_user_autoexpunge+0x1f8) [0x7ff43c1dfc68] -> dovecot/imap(+0x1ba7c) [0x7ff43c72fa7c] -> dovecot/imap(client_input+0xb5) [0x7ff43c7308c5] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x65) [0x7ff43bf0d315] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0x10f) [0x7ff43bf0ebbf] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x52) [0x7ff43bf0d412] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_run+0x38) [0x7ff43bf0d638] -> /usr/local/lib/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7ff43be8bb73] -> dovecot/imap(main+0x333) [0x7ff43c7226c3] -> /lib64/libc.so.6(__libc_start_main+0xf5) [0x7ff43ba8bc05] -> dovecot/imap(+0xe8a1) [0x7ff43c7228a1] Jan 22 09:25:57 dovecottest dovecot: imap(testuser)<8274><EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB>: Fatal: master: service(imap): child 8274 killed with signal 6 (core dumps disabled)
Configuration used for testing:
[root@dovecottest dovecot]# /usr/local/sbin/dovecot -n # 2.3.0 (c8b89eb): /usr/local/etc/dovecot/dovecot.conf # OS: Linux 3.10.0-514.el7.x86_64 x86_64 CentOS Linux release 7.3.1611 (Core) lock_method = dotlock mail_location = maildir:~/Maildir namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox INBOX { autoexpunge = 30 days } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } service lmtp { inet_listener lmtp { port = 24 } } ssl = no userdb { driver = passwd }
Regards, Jaakko
On 22.01.2018 17:01, Jaakko Seppälä wrote:
Hello,
Autoexpunge is not working when used with dotlock locking. It seems to been broken since version 2.2.28.
When autoexpunge is enabled and mailbox locking is set to dotlock all imap, pop and lmtp connections crash with the same error "file file-lock.c: line 287: unreached".
Connected to localhost. Escape character is '^]'.
- OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] Dovecot ready. X LOGIN testuser password X OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE LITERAL+ NOTIFY] Logged in X LOGOUT
- BYE Logging out X OK Logout completed (0.001 + 0.000 secs). Connection closed by foreign host.
=>
Jan 22 09:25:55 dovecottest dovecot: imap-login: Login: user=<testuser>, method=PLAIN, rip=::1, lip=::1, mpid=8274, secured, session=<EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB> Jan 22 09:25:57 dovecottest dovecot: imap(testuser)<8274><EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB>: Panic: file file-lock.c: line 287: unreached Jan 22 09:25:57 dovecottest dovecot: imap(testuser)<8274><EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB>: Error: Raw backtrace: /usr/local/lib/dovecot/libdovecot.so.0(+0xc8d24) [0x7ff43bef5d24] -> /usr/local/lib/dovecot/libdovecot.so.0(+0xc8dde) [0x7ff43bef5dde] -> /usr/local/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7ff43be69190] -> /usr/local/lib/dovecot/libdovecot.so.0(+0xcd8ff) [0x7ff43befa8ff] -> /usr/local/lib/dovecot/libdovecot.so.0(file_wait_lock_error+0x26) [0x7ff43befac46] -> /usr/local/lib/dovecot/libdovecot.so.0(file_try_lock_error+0x13) [0x7ff43befacc3] -> /usr/local/lib/dovecot/libdovecot.so.0(file_create_locked+0x253) [0x7ff43bef7df3] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mail_user_lock_file_create+0xc5) [0x7ff43c1f5f15] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mail_user_autoexpunge+0x1f8) [0x7ff43c1dfc68] -> dovecot/imap(+0x1ba7c) [0x7ff43c72fa7c] -> dovecot/imap(client_input+0xb5) [0x7ff43c7308c5] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x65) [0x7ff43bf0d315] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0x10f) [0x7ff43bf0ebbf] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x52) [0x7ff43bf0d412] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_run+0x38) [0x7ff43bf0d638] -> /usr/local/lib/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7ff43be8bb73] -> dovecot/imap(main+0x333) [0x7ff43c7226c3] -> /lib64/libc.so.6(__libc_start_main+0xf5) [0x7ff43ba8bc05] -> dovecot/imap(+0xe8a1) [0x7ff43c7228a1] Jan 22 09:25:57 dovecottest dovecot: imap(testuser)<8274><EDVCNV5jvNsAAAAAAAAAAAAAAAAAAAAB>: Fatal: master: service(imap): child 8274 killed with signal 6 (core dumps disabled)
Configuration used for testing:
[root@dovecottest dovecot]# /usr/local/sbin/dovecot -n # 2.3.0 (c8b89eb): /usr/local/etc/dovecot/dovecot.conf # OS: Linux 3.10.0-514.el7.x86_64 x86_64 CentOS Linux release 7.3.1611 (Core) lock_method = dotlock mail_location = maildir:~/Maildir namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox INBOX { autoexpunge = 30 days } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } service lmtp { inet_listener lmtp { port = 24 } } ssl = no userdb { driver = passwd }
Regards, Jaakko
Hi!
Thanks for reporting this, we'll look into it.
Aki
participants (2)
-
Aki Tuomi
-
Jaakko Seppälä