[Dovecot] Crash while accessing mdbox folders
Hi,
I've converted some accounts with "dsync mirror maildir:~/Maildir". It seemed to work, but when I access the folders via IMAP I get the following error:
Jul 11 09:41:59 shrike dovecot: imap(matze): Debug: acl vfile: file /home/matze/mdbox/mailboxes/Telefon/dbox-Mails/dovecot-acl not found Jul 11 09:41:59 shrike dovecot: imap(matze): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name)) Jul 11 09:41:59 shrike dovecot: imap(matze): Error: Raw backtrace: /usr/local/lib/dovecot/libdovecot.so.0 [0x2b344bcd2da2] -> /usr/local/lib/dovecot/libdovecot.so.0 [0x2b344bcd2e0a] -> /usr/local/lib/dovecot/libdovecot.so.0(i_error+0) [0x2 b344bcd31b3] -> /usr/local/lib/dovecot/libdovecot-storage.so.0 [0x2b344ba2eb8d] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c89c203] -> /usr/local/lib/dovecot/lib01_acl_plugin.so(acl_mailbox_list_have_right+0x71) [0x2b344c8a0291] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c8a067c] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_list_iter_next+0xa) [0x2b344b9fefaa] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c89feba] -> /usr/local/lib /dovecot/lib01_acl_plugin.so [0x2b344c8a0782] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_list_iter_next+0xa) [0x2b344b9fefaa] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c89feba] -> /usr/local/lib/dovecot/lib01_acl _plugin.so [0x2b344c8a0782] -> /usr/local/lib/dovecot/libdovecot-stor Jul 11 09:41:59 shrike dovecot: master: Error: service(imap): child 3174 killed with signal 6 (core dumped)
Backtrace:
#0 0x00002b344c354ed5 in raise () from /lib/libc.so.6 No symbol table info available. #1 0x00002b344c3563f3 in abort () from /lib/libc.so.6 No symbol table info available. #2 0x00002b344bcd2db5 in default_fatal_finish (type=<value optimized out>, status=0) at failures.c:164 backtrace = 0xa983760 "/usr/local/lib/dovecot/libdovecot.so.0 [0x2b344bcd2da2] -> /usr/local/lib/dovecot/libdovecot.so.0 [0x2b344bcd2e0a] -> /usr/local/lib/dovecot/libdovecot.so.0(i_error+0) [0x2b344bcd31b3] -> /usr/local/l"... #3 0x00002b344bcd2e0a in i_internal_fatal_handler (type=LOG_TYPE_PANIC, status=0, fmt=<value optimized out>, args=<value optimized out>) at failures.c:593 No locals. #4 0x00002b344bcd31b3 in i_panic (format=<value optimized out>) at failures.c:230 args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7fff8edf67b0, reg_save_area = 0x7fff8edf66f0}} #5 0x00002b344ba2eb8d in fs_list_get_path (_list=0xa9b4fc8, name=0xa983700 "Telefon/", type=MAILBOX_LIST_PATH_TYPE_MAILBOX) at mailbox-list-fs.c:150 root_dir = <value optimized out> __FUNCTION__ = "fs_list_get_path" #6 0x00002b344c89c203 in acl_backend_vfile_object_init (_backend=0xa9b57d8, name=0xa983700 "Telefon/") at acl-backend-vfile.c:171 aclobj = (struct acl_object_vfile *) 0xa9d0660 dir = <value optimized out> #7 0x00002b344c8a0291 in acl_mailbox_list_have_right (list=0xa9b4fc8, name=0xa983700 "Telefon/", parent=false, acl_storage_right_idx=0, can_see_r=0x0) at acl-mailbox-list.c:63 alist = (struct acl_mailbox_list *) 0xa9b5210 backend = (struct acl_backend *) 0xc66 aclobj = <value optimized out> ret = <value optimized out> ret2 = <value optimized out> #8 0x00002b344c8a067c in acl_mailbox_list_iter_next (_ctx=<value optimized out>) at acl-mailbox-list.c:328 _data_stack_cur_id = 7 ctx = (struct acl_mailbox_list_iterate_context *) 0xa9cd900 info = <value optimized out> ret = <value optimized out> #9 0x00002b344b9fefaa in mailbox_list_iter_next (ctx=0xc66) at mailbox-list.c:1048 info = <value optimized out> #10 0x00002b344c89feba in iter_mailbox_has_visible_children (ctx=0xa9cd520, only_nonpatterns=false) at acl-mailbox-list.c:299 iter = (struct mailbox_list_iterate_context *) 0xa9cd900 info = (const struct mailbox_info *) 0x1002 flags = 4098 pattern = <value optimized out> prefix = 0xa983630 "Telefon..*" i = <value optimized out> prefix_len = 9 stars = false ret = false __FUNCTION__ = "iter_mailbox_has_visible_children" #11 0x00002b344c8a0782 in acl_mailbox_list_iter_next (_ctx=<value optimized out>) at acl-mailbox-list.c:332 _data_stack_cur_id = 6 ctx = (struct acl_mailbox_list_iterate_context *) 0xa9cd520 info = <value optimized out> ret = 1 #12 0x00002b344b9fefaa in mailbox_list_iter_next (ctx=0xc66) at mailbox-list.c:1048 info = <value optimized out> #13 0x00002b344c89feba in iter_mailbox_has_visible_children (ctx=0xa9caec0, only_nonpatterns=false) at acl-mailbox-list.c:299 iter = (struct mailbox_list_iterate_context *) 0xa9cd520 info = (const struct mailbox_info *) 0x1002 flags = 4098 pattern = <value optimized out> prefix = 0xa9834d8 "Telefon.*" i = <value optimized out> prefix_len = 8 stars = false ret = false __FUNCTION__ = "iter_mailbox_has_visible_children" #14 0x00002b344c8a0782 in acl_mailbox_list_iter_next (_ctx=<value optimized out>) at acl-mailbox-list.c:332 _data_stack_cur_id = 5 ctx = (struct acl_mailbox_list_iterate_context *) 0xa9caec0 info = <value optimized out> ret = 1 #15 0x00002b344b9fefaa in mailbox_list_iter_next (ctx=0xc66) at mailbox-list.c:1048 info = <value optimized out> #16 0x000000000040bd49 in cmd_list_continue (cmd=0xa9be4d8) at cmd-list.c:374 _data_stack_cur_id = 4 ctx = (struct cmd_list_context *) 0xa9be5d0 #17 0x000000000040cc17 in cmd_list_full (cmd=0xa9be4d8, lsub=false) at cmd-list.c:954 client = (struct client *) 0xa9bdd78 args = (const struct imap_arg *) 0xa9c0d70 list_args = (const struct imap_arg *) 0xa9830f8 arg_count = <value optimized out> ctx = (struct cmd_list_context *) 0xa9be5d0 patterns = {arr = {buffer = 0xa9be620, element_size = 8}, v = 0xa9be620, v_modifiable = 0xa9be620} pattern = 0xa9c0e28 "*" patterns_strarr = <value optimized out> #18 0x000000000041038c in client_command_input (cmd=0xa9be4d8) at imap-client.c:652 client = (struct client *) 0xa9bdd78 command = <value optimized out> __FUNCTION__ = "client_command_input" #19 0x000000000041043d in client_command_input (cmd=0xa9be4d8) at imap-client.c:702 client = (struct client *) 0xa9bdd78 command = (struct command *) 0x6 __FUNCTION__ = "client_command_input" #20 0x00000000004105b5 in client_handle_input (client=0xa9bdd78) at imap-client.c:743 _data_stack_cur_id = 3 ret = 19 remove_io = <value optimized out> handled_commands = false __FUNCTION__ = "client_handle_input" #21 0x0000000000410fe2 in client_input (client=0xa9bdd78) at imap-client.c:794 cmd = <value optimized out> output = (struct ostream *) 0xa9be358 bytes = <value optimized out> __FUNCTION__ = "client_input" #22 0x00002b344bcddb0b in io_loop_handler_run (ioloop=<value optimized out>) at ioloop-epoll.c:212 ctx = (struct ioloop_handler_context *) 0xa98b7f0 event = (const struct epoll_event *) 0xa98b860 list = (struct io_list *) 0xa9be430 io = (struct io_file *) 0xa9be3f0 tv = {tv_sec = 4, tv_usec = 998985} t_id = 2 msecs = <value optimized out> ret = 1 call = <value optimized out> #23 0x00002b344bcdcc88 in io_loop_run (ioloop=0xa98b5e0) at ioloop.c:350 No locals. #24 0x00002b344bccc703 in master_service_run (service=0xa98b4b0, callback=0xc66) at master-service.c:495 No locals. #25 0x00000000004191a1 in main (argc=2, argv=0xa98b370) at main.c:358 service_flags = <value optimized out> storage_service_flags = <value optimized out> postlogin_socket_path = 0xa983098 "/usr/local/var/run/dovecot/postlogin" username = 0x0 c = <value optimized out> set_roots = {0x41c3a0, 0x0}
Config: # 2.0.rc2 (77f244924009): /etc/dovecot/dovecot.conf # OS: Linux 2.6.18-028stab069.6 x86_64 Debian 5.0.5 auth_master_user_separator = * auth_username_format = %n disable_plaintext_auth = no listen = * mail_debug = yes mail_location = mdbox:~/mdbox mail_plugins = virtual fts fts_squat zlib acl managesieve_notify_capability = mailto managesieve_sieve_capability = comparator-i;octet comparator-i;ascii-casemap fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date spamtest spamtestplus virustest namespace { hidden = yes inbox = no list = no location = prefix = mail separator = type = private } namespace { hidden = no inbox = yes location = prefix = separator = . type = private } namespace { hidden = yes inbox = no list = no location = prefix = INBOX. separator = . type = private } namespace { list = children location = mdbox:/home/%%n/mdbox:INDEX=~/mdbox.index/shared/%%u prefix = common.%%u. separator = . subscriptions = no type = shared } namespace { hidden = no list = yes location = virtual:~/Maildir/virtual prefix = virtual. separator = . subscriptions = yes type = private }
passdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap } passdb { args = /etc/dovecot/passwd.masterusers driver = passwd-file master = yes } plugin { acl = vfile:/etc/dovecot/acls:cache_secs=7200 acl_shared_dict = file:/var/lib/dovecot/shared-mailboxes.db fts = squat fts_squat = partial=4 full=4 sieve_dir = ~/Maildir/sieve } protocols = imap pop3 sieve service imap { executable = imap postlogin vsz_limit = 1073741824 } service managesieve-login { inet_listener sieve { port = 4190 } } service postlogin { executable = script-login rawlog } ssl_cert =
Regards, Matthias
Hi,
On 11.07.2010 09:46, Matthias Rieber wrote:
Hi,
I've converted some accounts with "dsync mirror maildir:~/Maildir". It seemed to work, but when I access the folders via IMAP I get the following error:
it crashed while issuing LIST. SELECT seems to work.
Regards, Matthias
On Sun, 2010-07-11 at 09:46 +0200, Matthias Rieber wrote:
Jul 11 09:41:59 shrike dovecot: imap(matze): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name))
Hi,
On Sun, 2010-07-11 at 09:46 +0200, Matthias Rieber wrote:
I've converted some accounts with "dsync mirror maildir:~/Maildir". It seemed to work, but when I access the folders via IMAP I get the following error:
Jul 11 09:41:59 shrike dovecot: imap(matze): Debug: acl vfile: file /home/matze/mdbox/mailboxes/Telefon/dbox-Mails/dovecot-acl not found Jul 11 09:41:59 shrike dovecot: imap(matze): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name)) Jul 11 09:41:59 shrike dovecot: imap(matze): Error: Raw backtrace: /usr/local/lib/dovecot/libdovecot.so.0 [0x2b344bcd2da2] -> /usr/local/lib/dovecot/libdovecot.so.0 [0x2b344bcd2e0a] -> /usr/local/lib/dovecot/libdovecot.so.0(i_error+0) [0x2 b344bcd31b3] -> /usr/local/lib/dovecot/libdovecot-storage.so.0 [0x2b344ba2eb8d] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c89c203] -> /usr/local/lib/dovecot/lib01_acl_plugin.so(acl_mailbox_list_have_right+0x71) [0x2b344c8a0291] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c8a067c] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_list_iter_next+0xa) [0x2b344b9fefaa] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c89feba] -> /usr/local/lib /dovecot/lib01_acl_plugin.so [0x2b344c8a0782] -> /usr/local/lib/dovecot/libdovecot-storage.so.0(mailbox_list_iter_next+0xa) [0x2b344b9fefaa] -> /usr/local/lib/dovecot/lib01_acl_plugin.so [0x2b344c89feba] -> /usr/local/lib/dovecot/lib01_acl _plugin.so [0x2b344c8a0782] -> /usr/local/lib/dovecot/libdovecot-stor Jul 11 09:41:59 shrike dovecot: master: Error: service(imap): child 3174 killed with signal 6 (core dumped)
I know this has been fixed on July 11th, and I'm not using acl or mdbox (yet), but I see similar errors on 2.0rc3 on plain mboxes:
Jul 28 19:42:48 lda(athimm): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name)) Jul 28 19:42:48 lda(athimm): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0() [0x3c1e43770a] -> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x37) [0x3c1e4377e7] -> /usr/lib64/dovecot/libdovecot.so.0(i_error+0) [0x3c1e437b03] -> /usr/lib64/dovecot/libdovecot-storage.so.0() [0x3c1e8608c7] -> /usr/lib64/dovecot/libdovecot-storage.so.0() [0x3c1e88b7d7] -> /usr/lib64/dovecot/libdovecot-storage.so.0(index_storage_mailbox_alloc+0x13c) [0x3c1e8708ac] -> /usr/lib64/dovecot/libdovecot-storage.so.0() [0x3c1e88b387] -> /usr/lib64/dovecot/libdovecot-storage.so.0(mailbox_alloc+0x5d) [0x3c1e82e88d] -> /usr/lib64/dovecot/libdovecot-lda.so.0(mail_deliver_save_open+0xd2) [0x3c1ec05292] -> /usr/lib64/dovecot/libdovecot-sieve.so.0() [0x3c1f032dd0] -> /usr/lib64/dovecot/libdovecot-sieve.so.0(sieve_result_execute+0x95) [0x3c1f02aca5] -> /usr/lib64/dovecot/libdovecot-sieve.so.0(sieve_execute+0x7d) [0x3c1f03999d] -> /usr/lib64/dovecot/lib90_sieve_plugin.so(+0x2a8e) [0x7faff7568a8e] -> /usr/lib64/dovecot/libdovecot-lda.so.0(mail_deliver+0x45) [0x3c1ec05a25] -> /usr/libexec/dovecot/dovecot-lda(main+0x432) [0x4028e2] -> /lib64/libc.so.6(__libc_start_main+0xfd) [0x3306a1eb1d] -> /usr/libexec/dovecot/dovecot-lda() [0x402289]
On Wed, 2010-07-28 at 22:08 +0300, Axel Thimm wrote:
I know this has been fixed on July 11th, and I'm not using acl or mdbox (yet), but I see similar errors on 2.0rc3 on plain mboxes:
Jul 28 19:42:48 lda(athimm): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name)) Jul 28 19:42:48 lda(athimm): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0() [0x3c1e43770a] -> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x37) [0x3c1e4377e7] -> /usr/lib64/dovecot/libdovecot.so.0(i_error+0) [0x3c1e437b03] -> /usr/lib64/dovecot/libdovecot-storage.so.0() [0x3c1e8608c7] -> /usr/lib64/dovecot/libdovecot-storage.so.0() [0x3c1e88b7d7] -> /usr/lib64/dovecot/libdovecot-storage.so.0(index_storage_mailbox_alloc+0x13c) [0x3c1e8708ac] -> /usr/lib64/dovecot/libdovecot-storage.so.0() [0x3c1e88b387] -> /usr/lib64/dovecot/libdovecot-storage.so.0(mailbox_alloc+0x5d) [0x3c1e82e88d] -> /usr/lib64/dovecot/libdovecot-lda.so.0(mail_deliver_save_open+0xd2) [0x3c1ec05292] -> /usr/lib64/dovecot/libdovecot-sieve.so.0() [0x3c1f032dd0] -> /usr/lib64/dovecot/libdovecot-sieve.so.0(sieve_result_execute+0x95) [0x3c1f02aca5] -> /usr/lib64/dovecot/libdovecot-sieve.so.0(sieve_execute+0x7d) [0x3c1f03999d] -> /usr/lib64/dovecot/lib90_sieve_plugin.so(+0x2a8e) [0x7faff7568a8e] -> /usr/lib64/dovecot/libdovecot-lda.so.0(mail_deliver+0x45) [0x3c1ec05a25] -> /usr/libexec/dovecot/dovecot-lda(main+0x432) [0x4028e2] -> /lib64/libc.so.6(__libc_start_main+0xfd) [0x3306a1eb1d] -> /usr/libexec/dovecot/dovecot-lda() [0x402289]
I found what the issue was, a bogus line in my sieve script tried to use a match variable that hadn't been set (e.g. I matched only two globs, but I used ${3}).
So it's a cockpit issue, but maybe the error message and error recovery (the mails are lost, not even temped) could be managed differently? Thanks!
On Thu, 2010-07-29 at 13:56 +0300, Axel Thimm wrote:
Jul 28 19:42:48 lda(athimm): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name)) .. I found what the issue was, a bogus line in my sieve script tried to use a match variable that hadn't been set (e.g. I matched only two globs, but I used ${3}).
Is it the same as if you just did fileinto ""? I can't reproduce this, the best I get is:
Aug 02 15:59:25 lda(2189 tss): Error: sieve: msgid=blah@blah: subject=blah: failed to store into mailbox '': Unknown namespace Aug 02 15:59:25 lda(2189 tss): Error: sieve: execution of script /home/tss/.dovecot.sieve failed, but implicit keep was successful
or if I have a prefix="" namespace, then it just quietly goes to INBOX.
On Mon, Aug 02, 2010 at 04:01:24PM +0100, Timo Sirainen wrote:
On Thu, 2010-07-29 at 13:56 +0300, Axel Thimm wrote:
Jul 28 19:42:48 lda(athimm): Panic: file mailbox-list-fs.c: line 150 (fs_list_get_path): assertion failed: (mailbox_list_is_valid_pattern(_list, name)) .. I found what the issue was, a bogus line in my sieve script tried to use a match variable that hadn't been set (e.g. I matched only two globs, but I used ${3}).
Is it the same as if you just did fileinto ""? I can't reproduce this, the best I get is:
Aug 02 15:59:25 lda(2189 tss): Error: sieve: msgid=blah@blah: subject=blah: failed to store into mailbox '': Unknown namespace Aug 02 15:59:25 lda(2189 tss): Error: sieve: execution of script /home/tss/.dovecot.sieve failed, but implicit keep was successful
or if I have a prefix="" namespace, then it just quietly goes to INBOX.
Here are my rules for mailing lists catchall:
if header :matches "List-ID" "*<*.*>" { fileinto :create "${folder}/${3}/${2}"; addflag "DeliveredTo" "$${dflag}"; } elsif header :matches "List-ID" "*<*>" { fileinto :create "${folder}/${2}"; addflag "DeliveredTo" "$${dflag}"; } elsif header :matches "List-ID" "*.*" { fileinto :create "${folder}/${2}/${1}"; addflag "DeliveredTo" "$${dflag}"; } elsif header :matches "List-ID" "*" { fileinto :create "${folder}/${1}"; addflag "DeliveredTo" "$${dflag}"; } elsif header :matches "List-Owner" "mailto:*-owner@*" { fileinto :create "${folder}/${2}/${1}"; addflag "DeliveredTo" "$${dflag}"; } elsif header :matches "List-post" "mailto:*@*" { fileinto :create "${folder}/${2}/${1}"; addflag "DeliveredTo" "$${dflag}"; } elsif header :matches "List-owner" "mailto:*-request@*" { fileinto :create "${folder}/${2}/${1}"; addflag "DeliveredTo" "$${dflag}"; }
Due to copy and paste I had some rules like
} elsif header :matches "List-Owner" "mailto:*-owner@*" { fileinto :create "${folder}/${3}/${2}"; addflag "DeliveredTo" "$${dflag}"; } [...]
The bad rules only triggered on very few mailing lists (those that don't use proper List-*: headers), so I only noticed a couple of days later. IIRC two of the lists were bugzilla and scientific-linux.
E.g. the fileinto was probably given some argument of "lists//somedomain.org"
Does this information help?
On Tue, 2010-08-03 at 13:16 +0200, Axel Thimm wrote:
Due to copy and paste I had some rules like
} elsif header :matches "List-Owner" "mailto:*-owner@*" { fileinto :create "${folder}/${3}/${2}"; addflag "DeliveredTo" "$${dflag}"; } [...]
The bad rules only triggered on very few mailing lists (those that don't use proper List-*: headers), so I only noticed a couple of days later. IIRC two of the lists were bugzilla and scientific-linux.
E.g. the fileinto was probably given some argument of "lists//somedomain.org"
Does this information help?
I still can't reproduce it:
require ["fileinto", "variables", "mailbox"];
if header :matches "Subject" "*" { fileinto :create "foo/${2}/${1}"; }
printf "Subject: somedomain.org\n"|./dovecot-lda
gives:
Aug 03 13:19:05 lda(10194 tss): Info: sieve: msgid=unspecified: subject=somedomain.org: store into mailbox 'foo//somedomain/org' aborted Aug 03 13:19:05 lda(10194 tss): Info: sieve: msgid=unspecified: subject=somedomain.org: stored mail into mailbox 'INBOX' Aug 03 13:19:05 lda(10194 tss): Error: sieve: execution of script /home/tss/.dovecot.sieve failed, but implicit keep was successful
Although it is missing the "invalid mailbox name" error, which I think is a bug.
On 08/03/2010 02:21 PM, Timo Sirainen wrote:
gives:
Aug 03 13:19:05 lda(10194 tss): Info: sieve: msgid=unspecified: subject=somedomain.org: store into mailbox 'foo//somedomain/org' aborted Aug 03 13:19:05 lda(10194 tss): Info: sieve: msgid=unspecified: subject=somedomain.org: stored mail into mailbox 'INBOX' Aug 03 13:19:05 lda(10194 tss): Error: sieve: execution of script /home/tss/.dovecot.sieve failed, but implicit keep was successful
Although it is missing the "invalid mailbox name" error, which I think is a bug.
Should be fixed now:
http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/8ab83f81360e
Regards,
Stephan.
participants (5)
-
Axel Thimm
-
Axel Thimm
-
Matthias Rieber
-
Stephan Bosch
-
Timo Sirainen