I converted personal mailboxes from maildir to sdbox. Public mailboxes are still in maildir format, because I need per-user seen flags. However, if the user is subscribed to public mailboxes and the client sends 'LIST (SUBSCRIBED) "" *', dovecot crashes with:
imap(holger@mauermann.org): Panic: file mailbox-list-maildir.c: line 133: unreached imap(holger@mauermann.org): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x3756a) [0x7f25f7b1456a] -> /usr/lib/dovecot/libdovecot.so.0(+0x375b6) [0x7f25f7b145b6] -> /usr/lib/dovecot/libdovecot.so.0(+0x118ca) [0x7f25f7aee8ca] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0x35cce) [0x7f25f7d8acce] -> /usr/lib/dovecot/libdovecot-storage.so.0(mailbox_list_is_valid_pattern+0x26) [0x7f25f7d80146] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0x33a31) [0x7f25f7d88a31] -> /usr/lib/dovecot/libdovecot-storage.so.0(fs_list_iter_next+0x2f) [0x7f25f7d885cf] -> /usr/lib/dovecot/modules/lib01_acl_plugin.so(+0xb658) [0x7f25f6f2c658] -> /usr/lib/dovecot/libdovecot-storage.so.0(mailbox_list_iter_next+0xa) [0x7f25f7d7faba] -> dovecot/imap(+0xc529) [0x7f25f824d529] -> dovecot/imap(cmd_list_full+0x43e) [0x7f25f824e48e] -> dovecot/imap(+0x10dad) [0x7f25f8251dad] -> dovecot/imap(+0x10e8d) [0x7f25f8251e8d] -> dovecot/imap(client_handle_input+0x135) [0x7f25f82520c5] -> dovecot/imap(client_in put+0x62) [0x7f25f8252a22] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x48) [0x7f25f7b1f898] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x9f) [0x7f25f7b2080f] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x28) [0x7f25f7b1f828] -> /usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7f25f7b0dcf3] -> dovecot/imap(main+0x30f) [0x7f25f825b07f] -> /lib/libc.so.6(__libc_start_main+0xfe) [0x7f25f736cd8e] -> dovecot/imap(+0x9279) [0x7f25f824a279] master: Error: service(imap): child 32285 killed with signal 6 (core dumped)
This does not happen with 'LSUB "" *' or with personal mailboxes in maildir format.
Below is the gdb and doveconf -n output:
(gdb) bt full #0 0x00007f25f7381ba5 in raise () from /lib/libc.so.6 No symbol table info available. #1 0x00007f25f73856b0 in abort () from /lib/libc.so.6 No symbol table info available. #2 0x00007f25f7b1457d in default_fatal_finish (type=<value optimized out>, status=0) at failures.c:187 backtrace = 0x7f25f980d468 "/usr/lib/dovecot/libdovecot.so.0(+0x3756a) [0x7f25f7b1456a] -> /usr/lib/dovecot/libdovecot.so.0(+0x375b6) [0x7f25f7b145b6] -> /usr/lib/dovecot/libdovecot.so.0(+0x118ca) [0x7f25f7aee8ca] -> /usr/lib/do"... #3 0x00007f25f7b145b6 in i_internal_fatal_handler (ctx=0x7fff36a6acc0, format=<value optimized out>, args=<value optimized out>) at failures.c:645 status = 0 #4 0x00007f25f7aee8ca in i_panic (format=0x7e1d <Address 0x7e1d out of bounds>) at failures.c:259 ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 0x0} args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fff36a6ad90, reg_save_area = 0x7fff36a6acd0}} #5 0x00007f25f7d8acce in maildir_is_valid_pattern (list=<value optimized out>, pattern=<value optimized out>) at mailbox-list-maildir.c:133 No locals. #6 0x00007f25f7d80146 in mailbox_list_is_valid_pattern (list=0x7f25f98422d0, pattern=0x7f25f980d410 "public") at mailbox-list.c:651 _data_stack_cur_id = 0 ret = <value optimized out> #7 0x00007f25f7d88a31 in fs_list_subs (ctx=0x7f25f9818b70) at mailbox-list-fs-iter.c:683 node = <value optimized out> flags = MAILBOX_SUBSCRIBED ns = <value optimized out> path = <value optimized out> dir = <value optimized out> fname = <value optimized out> storage_name = 0x7f25f980d410 "public" len = 0 st = {st_dev = 139801076486872, st_ino = 19, st_nlink = 139801053739543, st_mode = 128, st_uid = 0, st_gid = 1, __pad0 = 0, st_rdev = 139801046211004, st_size = 206158430224, st_blksize = 140734110281536, st_blocks = 140734110281344, st_atim = {tv_sec = 579820584960, tv_nsec = 139801076651024}, st_mtim = {tv_sec = 139801076728920, tv_nsec = 139801076766928}, st_ctim = {tv_sec = 139801076486872, tv_nsec = 536871048}, __unused = {128, 139801076731466, 139801046189669}} #8 0x00007f25f7d885cf in fs_list_iter_next (_ctx=0x7f25f9818b70) at mailbox-list-fs-iter.c:356 _data_stack_cur_id = 0 info = <value optimized out> __FUNCTION__ = "fs_list_iter_next" #9 0x00007f25f6f2c658 in acl_mailbox_list_iter_next_info (_ctx=<value optimized out>) at acl-mailbox-list.c:205 alist = 0x7f25f9835410 #10 acl_mailbox_list_iter_next (_ctx=<value optimized out>) at acl-mailbox-list.c:372 ctx = 0x7f25f98163f0 info = 0x7f25f98518d0 ret = <value optimized out> #11 0x00007f25f7d7faba in mailbox_list_iter_next (ctx=0x7e1d) at mailbox-list.c:1029 info = <value optimized out> #12 0x00007f25f824d529 in list_namespace_mailboxes (cmd=<value optimized out>) at cmd-list.c:377 info = 0x80 flags = 536871048 str = 0x7f25f980d2d8 ret = 1 ns = 0x0 name = 0x7f25f98518d0 "Public/public" #13 cmd_list_continue (cmd=<value optimized out>) at cmd-list.c:792 _data_stack_cur_id = 4 ctx = 0x7f25f9848458 #14 0x00007f25f824e48e in cmd_list_full (cmd=0x7f25f9848350, lsub=false) at cmd-list.c:957 client = 0x7f25f9847be0 args = 0x7f25f984ac08 list_args = 0x7f25f984acd0 arg_count = <value optimized out> ctx = 0x7f25f9848458 patterns = {arr = {buffer = 0x7f25f98484a8, element_size = 8}, v = 0x7f25f98484a8, v_modifiable = 0x7f25f98484a8} pattern = 0x7f25f984adc8 "*" patterns_strarr = <value optimized out> #15 0x00007f25f8251dad in client_command_input (cmd=0x7f25f9848350) at imap-client.c:661 client = 0x7f25f9847be0 command = <value optimized out> __FUNCTION__ = "client_command_input" #16 0x00007f25f8251e8d in client_command_input (cmd=0x7f25f9848350) at imap-client.c:711 client = 0x7f25f9847be0 command = 0x0 __FUNCTION__ = "client_command_input" #17 0x00007f25f82520c5 in client_handle_next_command (client=0x7f25f9847be0) at imap-client.c:752 size = 26 #18 client_handle_input (client=0x7f25f9847be0) at imap-client.c:764 _data_stack_cur_id = 3 ret = false remove_io = <value optimized out> handled_commands = false __FUNCTION__ = "client_handle_input" #19 0x00007f25f8252a22 in client_input (client=0x7f25f9847be0) at imap-client.c:803 cmd = <value optimized out> output = 0x7f25f98481c8 bytes = <value optimized out> __FUNCTION__ = "client_input" #20 0x00007f25f7b1f898 in io_loop_call_io (io=0x7f25f9848260) at ioloop.c:383 ioloop = 0x7f25f98155e0 t_id = 2 #21 0x00007f25f7b2080f in io_loop_handler_run (ioloop=<value optimized out>) at ioloop-epoll.c:213 ctx = 0x7f25f9815810 event = 0x7f25f9815880 list = 0x7f25f98482b0 io = 0x7e1d tv = {tv_sec = 1782, tv_usec = 549357} msecs = <value optimized out> ret = <value optimized out> i = 0 call = false #22 0x00007f25f7b1f828 in io_loop_run (ioloop=0x7f25f98155e0) at ioloop.c:404 No locals. #23 0x00007f25f7b0dcf3 in master_service_run (service=0x7f25f98154b0, callback=0x7e1d) at master-service.c:484 No locals. #24 0x00007f25f825b07f in main (argc=1, argv=0x7f25f9815370) at main.c:375 set_roots = {0x7f25f8460da0, 0x0} service_flags = <value optimized out> storage_service_flags = <value optimized out> postlogin_socket_path = 0x0 username = 0x0 c = <value optimized out>
# 2.0.9: /etc/dovecot/dovecot.conf # OS: Linux 2.6.35-23-virtual x86_64 Ubuntu 10.10 auth_debug = yes auth_mechanisms = plain login digest-md5 cram-md5 apop disable_plaintext_auth = no lmtp_save_to_detail_mailbox = yes mail_debug = yes mail_location = sdbox:~/dbox:DIRNAME=.dbox-mails mail_plugins = " quota acl zlib lazy_expunge" managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date namespace backup { hidden = yes list = no location = sdbox:~/expunged:DIRNAME=.dbox-mails prefix = .EXPUNGED/ separator = / type = private } namespace other { list = children location = sdbox:%%h/dbox:DIRNAME=.dbox-mails prefix = Shared/%%u/ separator = / subscriptions = no type = shared } namespace pub { list = children location = maildir:/var/spool/imap/public:INDEX=~/public prefix = Public/ separator = / subscriptions = no type = public } namespace user { inbox = yes location = prefix = separator = / type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { acl = vfile acl_shared_dict = file:/var/spool/imap/shared-mailboxes.dict lazy_expunge = .EXPUNGED/ quota = dict:::file:%h/dbox/dovecot-quota quota_rule = *:storage=1G quota_rule2 = Trash:storage=+50M sieve = ~/.dovecot.sieve sieve_dir = ~/sieve } protocols = imap pop3 sieve rejection_subject = Mail delivery failed: %s service auth { unix_listener auth-exim { user = Debian-exim } unix_listener auth-userdb { user = vmail } } service lmtp { inet_listener lmtp { port = 24 } } service managesieve-login { inet_listener sieve { port = 4190 } inet_listener sieve_deprecated { port = 2000 } } ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } protocol lmtp { mail_plugins = " quota acl zlib lazy_expunge sieve" } protocol lda { mail_plugins = " quota acl zlib lazy_expunge sieve" } protocol imap { mail_plugins = " quota acl zlib lazy_expunge imap_quota imap_acl imap_zlib" } protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh }