Autoexpunge is not working with dotlock locking

Jaakko Seppälä jaakko at seppala.me
Mon Jan 22 17:01:18 EET 2018


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 at 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


More information about the dovecot mailing list