Matthias Rieber
2010-Jun-19 21:29 UTC
[Dovecot] coredump while accessing virtual folder with dovecot 2.0
Hi, I get a core dump with 2.0.beta6 (573cb66e9180) when I access virtual folders with the master user. Since ACLs are active I have to set a global ACL in .DEFAULTS to access all folders. Coredump: Core was generated by `dovecot/imap'. Program terminated with signal 11, Segmentation fault. [New process 15910] #0 0x00002afabdfbd6a2 in virtual_config_free (mbox=0x10a34128) at ../../../src/lib/array.h:198 198 *count_r = array->buffer->used / array->element_size; #0 0x00002afabdfbd6a2 in virtual_config_free (mbox=0x10a34128) at ../../../src/lib/array.h:198 count = <value optimized out> #1 0x00002afabdfbf659 in virtual_mailbox_free (box=0x0) at virtual-storage.c:327 No locals. #2 0x00002afabddb4db4 in fts_mailbox_free (box=0x10a34128) at fts-storage.c:73 fbox = (struct fts_mailbox *) 0x10a36f20 #3 0x00002afabcb05db9 in mailbox_free (_box=<value optimized out>) at mail-storage.c:638 box = (struct mailbox *) 0x10a34128 #4 0x000000000040dfb9 in cmd_select_full (cmd=<value optimized out>, readonly=false) at cmd-select.c:287 client = (struct client *) 0x10a2e6e8 box = (struct mailbox *) 0x109f30b0 ctx = (struct imap_select_context *) 0x10a2ef50 args = (const struct imap_arg *) 0x10a316a0 list_args = (const struct imap_arg *) 0x2afabcdd9e2b status = MAILBOX_NAME_EXISTS_MAILBOX mailbox = 0x10a31790 "virtual.allsent" storage_name = 0x109f32b8 "allsent" ret = <value optimized out> __FUNCTION__ = "cmd_select_full" #5 0x000000000041036c in client_command_input (cmd=0x10a2ee48) at imap-client.c:643 client = (struct client *) 0x10a2e6e8 command = <value optimized out> __FUNCTION__ = "client_command_input" #6 0x000000000041041d in client_command_input (cmd=0x10a2ee48) at imap-client.c:693 client = (struct client *) 0x10a2e6e8 command = (struct command *) 0x0 __FUNCTION__ = "client_command_input" #7 0x0000000000410595 in client_handle_input (client=0x10a2e6e8) at imap-client.c:734 _data_stack_cur_id = 3 ret = 27 remove_io = <value optimized out> handled_commands = false __FUNCTION__ = "client_handle_input" #8 0x0000000000410fc2 in client_input (client=0x10a2e6e8) at imap-client.c:785 cmd = <value optimized out> output = (struct ostream *) 0x10a2ecc8 bytes = <value optimized out> __FUNCTION__ = "client_input" #9 0x00002afabcde6abb in io_loop_handler_run (ioloop=<value optimized out>) at ioloop-epoll.c:212 ctx = (struct ioloop_handler_context *) 0x109fb7e0 event = (const struct epoll_event *) 0x109fb850 list = (struct io_list *) 0x10a2eda0 io = (struct io_file *) 0x10a2ed60 tv = {tv_sec = 1799, tv_usec = 999059} t_id = 2 msecs = <value optimized out> ret = 1 call = <value optimized out> #10 0x00002afabcde5c38 in io_loop_run (ioloop=0x109fb5d0) at ioloop.c:350 No locals. #11 0x00002afabcdd5673 in master_service_run (service=0x109fb4a0, callback=0) at master-service.c:496 No locals. #12 0x0000000000419171 in main (argc=1, argv=0x109fb370) at main.c:359 service_flags = <value optimized out> storage_service_flags = <value optimized out> postlogin_socket_path = 0x0 username = 0x0 c = <value optimized out> set_roots = {0x41c340, 0x0} #0 0x00002afabdfbd6a2 in virtual_config_free (mbox=0x10a34128) at ../../../src/lib/array.h:198 count = <value optimized out> #1 0x00002afabdfbf659 in virtual_mailbox_free (box=0x0) at virtual-storage.c:327 No locals. #2 0x00002afabddb4db4 in fts_mailbox_free (box=0x10a34128) at fts-storage.c:73 fbox = (struct fts_mailbox *) 0x10a36f20 #3 0x00002afabcb05db9 in mailbox_free (_box=<value optimized out>) at mail-storage.c:638 box = (struct mailbox *) 0x10a34128 #4 0x000000000040dfb9 in cmd_select_full (cmd=<value optimized out>, readonly=false) at cmd-select.c:287 client = (struct client *) 0x10a2e6e8 box = (struct mailbox *) 0x109f30b0 ctx = (struct imap_select_context *) 0x10a2ef50 args = (const struct imap_arg *) 0x10a316a0 list_args = (const struct imap_arg *) 0x2afabcdd9e2b status = MAILBOX_NAME_EXISTS_MAILBOX mailbox = 0x10a31790 "virtual.allsent" storage_name = 0x109f32b8 "allsent" ret = <value optimized out> __FUNCTION__ = "cmd_select_full" #5 0x000000000041036c in client_command_input (cmd=0x10a2ee48) at imap-client.c:643 client = (struct client *) 0x10a2e6e8 command = <value optimized out> __FUNCTION__ = "client_command_input" #6 0x000000000041041d in client_command_input (cmd=0x10a2ee48) at imap-client.c:693 client = (struct client *) 0x10a2e6e8 command = (struct command *) 0x0 __FUNCTION__ = "client_command_input" #7 0x0000000000410595 in client_handle_input (client=0x10a2e6e8) at imap-client.c:734 _data_stack_cur_id = 3 ret = 27 remove_io = <value optimized out> handled_commands = false __FUNCTION__ = "client_handle_input" #8 0x0000000000410fc2 in client_input (client=0x10a2e6e8) at imap-client.c:785 cmd = <value optimized out> output = (struct ostream *) 0x10a2ecc8 bytes = <value optimized out> __FUNCTION__ = "client_input" #9 0x00002afabcde6abb in io_loop_handler_run (ioloop=<value optimized out>) at ioloop-epoll.c:212 ctx = (struct ioloop_handler_context *) 0x109fb7e0 event = (const struct epoll_event *) 0x109fb850 list = (struct io_list *) 0x10a2eda0 io = (struct io_file *) 0x10a2ed60 tv = {tv_sec = 1799, tv_usec = 999059} t_id = 2 msecs = <value optimized out> ret = 1 call = <value optimized out> #10 0x00002afabcde5c38 in io_loop_run (ioloop=0x109fb5d0) at ioloop.c:350 No locals. #11 0x00002afabcdd5673 in master_service_run (service=0x109fb4a0, callback=0) at master-service.c:496 No locals. #12 0x0000000000419171 in main (argc=1, argv=0x109fb370) at main.c:359 service_flags = <value optimized out> storage_service_flags = <value optimized out> postlogin_socket_path = 0x0 username = 0x0 c = <value optimized out> set_roots = {0x41c340, 0x0} doveconf output: # 2.0.beta6 (573cb66e9180): /etc/dovecot/dovecot.conf # OS: Linux 2.6.18-028stab069.6 x86_64 Debian 5.0.4 auth_anonymous_username = anonymous auth_cache_negative_ttl = 0 s auth_cache_size = 0 auth_cache_ttl = 3600 s auth_debug = no auth_debug_passwords = no auth_default_realm = auth_failure_delay = 2 s auth_gssapi_hostname = auth_krb5_keytab = auth_master_user_separator = * auth_mechanisms = plain auth_realms = auth_socket_path = auth-userdb auth_ssl_require_client_cert = no auth_ssl_username_from_cert = no auth_use_winbind = no auth_username_chars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ auth_username_format = %n auth_username_translation = auth_verbose = no auth_verbose_passwords = no auth_winbind_helper_path = /usr/bin/ntlm_auth auth_worker_max_count = 30 base_dir = /usr/local/var/run/dovecot config_cache_size = 1048576 debug_log_path = default_client_limit = 1000 default_internal_user = dovecot default_login_user = dovenull default_process_limit = 100 default_vsz_limit = 268435456 deliver_log_format = msgid=%m: %$ dict_db_config = director_mail_servers = director_servers = director_user_expire = 900 s disable_plaintext_auth = no dotlock_use_excl = no first_valid_gid = 1 first_valid_uid = 500 fsync_disable = no hostname = imap_capability = imap_client_workarounds = imap_id_log = imap_id_send = imap_idle_notify_interval = 120 s imap_logout_format = bytes=%i/%o imap_max_line_length = 65536 info_log_path = last_valid_gid = 0 last_valid_uid = 0 lda_mailbox_autocreate = no lda_mailbox_autosubscribe = no libexec_dir = /usr/local/libexec/dovecot listen = *, :: lmtp_proxy = no lock_method = fcntl log_path = syslog log_timestamp = %b %d %H:%M:%S login_access_sockets = login_greeting = Dovecot ready. login_log_format = %$: %s login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c login_trusted_networks = mail_access_groups = mail_cache_fields = flags mail_cache_min_mail_count = 0 mail_chroot = mail_debug = yes mail_full_filesystem_access = no mail_gid = mail_home = mail_location = maildir:~/Maildir mail_log_prefix = %s(%u): mail_max_keyword_length = 50 mail_max_userip_connections = 10 mail_never_cache_fields = imap.envelope mail_nfs_index = no mail_nfs_storage = no mail_plugin_dir = /usr/local/lib/dovecot mail_plugins = virtual fts fts_squat zlib acl imap_acl mail_privileged_group = mail_save_crlf = no mail_uid = mailbox_idle_check_interval = 30 s mailbox_list_index_disable = no maildir_copy_with_hardlinks = yes maildir_stat_dirs = no maildir_very_dirty_syncs = no master_user_separator = mbox_dirty_syncs = yes mbox_dotlock_change_timeout = 120 s mbox_lazy_writes = yes mbox_lock_timeout = 300 s mbox_min_index_size = 0 mbox_read_locks = fcntl mbox_very_dirty_syncs = no mbox_write_locks = dotlock fcntl mdbox_rotate_interval = 0 s mdbox_rotate_size = 2097152 mmap_disable = no namespace { hidden = yes inbox = no list = no location = prefix = mail separator = subscriptions = yes type = private } namespace { hidden = no inbox = yes list = yes location = prefix = separator = . subscriptions = yes type = private } namespace { hidden = yes inbox = no list = no location = prefix = INBOX. separator = . subscriptions = yes type = private } namespace { hidden = no inbox = no list = yes location = maildir:/home/sharedbox/Maildir:INDEX=~/Maildir/shared prefix = shared. separator = . subscriptions = yes type = public } namespace { hidden = no inbox = no list = children location = maildir:/home/%%n/Maildir:INDEX=~/Maildir/shared/%%u prefix = common.%%u. separator = . subscriptions = no type = shared } namespace { hidden = no inbox = no list = yes location = virtual:~/Maildir/virtual prefix = virtual. separator = . subscriptions = yes type = private } passdb { args = /etc/dovecot/dovecot-ldap.conf.ext deny = no driver = ldap master = no pass = no } passdb { args = /etc/dovecot/passwd.masterusers deny = no driver = passwd-file master = yes pass = no } plugin { acl = vfile:/etc/dovecot/acls:cache_secs=10 acl_shared_dict = file:/var/lib/dovecot/shared-mailboxes.db fts = squat fts_squat = partial=4 full=4 } pop3_client_workarounds = pop3_enable_last = no pop3_lock_session = no pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s pop3_no_flag_updates = no pop3_reuse_xuidl = no pop3_save_uidl = no pop3_uidl_format = %08Xu%08Xv postmaster_address = protocols = imap pop3 quota_full_tempfail = no recipient_delimiter = + rejection_reason = Your message to <%t> was automatically rejected:%n%r rejection_subject = Rejected: %s sendmail_path = /usr/sbin/sendmail service anvil { chroot = empty client_limit = 0 drop_priv_before_exec = no executable = anvil extra_groups = group = privileged_group = process_limit = 1 process_min_avail = 1 protocol = service_count = 0 type = anvil unix_listener anvil-auth-penalty { group = mode = 0600 user = } unix_listener anvil { group = mode = 0600 user = } user = $default_internal_user vsz_limit = 4294967295 } service auth-worker { chroot = client_limit = 1 drop_priv_before_exec = no executable = auth -w extra_groups = group = privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 1 type = unix_listener auth-worker { group = mode = 0600 user = $default_internal_user } user = vsz_limit = 4294967295 } service auth { chroot = client_limit = 4096 drop_priv_before_exec = no executable = auth extra_groups = group = privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = unix_listener auth-client { group = mode = 0600 user = } unix_listener auth-login { group = mode = 0600 user = $default_internal_user } unix_listener auth-master { group = mode = 0600 user = } unix_listener auth-userdb { group = mode = 0600 user = } unix_listener login/login { group = mode = 0666 user = } user = $default_internal_user vsz_limit = 4294967295 } service config { chroot = client_limit = 0 drop_priv_before_exec = no executable = config extra_groups = group = privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = config unix_listener config { group = mode = 0600 user = } user = vsz_limit = 4294967295 } service dict { chroot = client_limit = 1 drop_priv_before_exec = no executable = dict extra_groups = group = privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = unix_listener dict { group = mode = 0600 user = } user = $default_internal_user vsz_limit = 4294967295 } service director { chroot = client_limit = 0 drop_priv_before_exec = no executable = director extra_groups = fifo_listener login/proxy-notify { group = mode = 00 user = } group = privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = unix_listener director-admin { group = mode = 0600 user = } unix_listener login/director { group = mode = 00 user = } user = $default_internal_user vsz_limit = 4294967295 } service dns_client { chroot = client_limit = 1 drop_priv_before_exec = no executable = dns-client extra_groups = group = privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = unix_listener dns-client { group = mode = 0666 user = } unix_listener login/dns-client { group = mode = 0666 user = } user = $default_internal_user vsz_limit = 4294967295 } service imap-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = imap-login extra_groups = group = inet_listener imap { address = port = 143 ssl = no } inet_listener imaps { address = port = 993 ssl = yes } privileged_group = process_limit = 0 process_min_avail = 0 protocol = imap service_count = 1 type = login user = $default_login_user vsz_limit = 64 } service imap { chroot = client_limit = 1 drop_priv_before_exec = no executable = imap extra_groups = group = privileged_group = process_limit = 1024 process_min_avail = 0 protocol = imap service_count = 1 type = unix_listener login/imap { group = mode = 0666 user = } user = vsz_limit = 1073741824 } service lmtp { chroot = client_limit = 0 drop_priv_before_exec = no executable = lmtp extra_groups = group = privileged_group = process_limit = 0 process_min_avail = 0 protocol = lmtp service_count = 0 type = unix_listener lmtp { group = mode = 0666 user = } user = vsz_limit = 0 } service log { chroot = client_limit = 0 drop_priv_before_exec = no executable = log extra_groups = group = privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = log user = vsz_limit = 4294967295 } service pop3-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = pop3-login extra_groups = group = inet_listener pop3 { address = port = 110 ssl = no } inet_listener pop3s { address = port = 995 ssl = yes } privileged_group = process_limit = 0 process_min_avail = 0 protocol = pop3 service_count = 1 type = login user = $default_login_user vsz_limit = 64 } service pop3 { chroot = client_limit = 1 drop_priv_before_exec = no executable = pop3 extra_groups = group = privileged_group = process_limit = 1024 process_min_avail = 0 protocol = pop3 service_count = 1 type = unix_listener login/pop3 { group = mode = 0666 user = } user = vsz_limit = 4294967295 } service ssl-params { chroot = client_limit = 0 drop_priv_before_exec = no executable = ssl-params extra_groups = group = privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = unix_listener login/ssl-params { group = mode = 0666 user = } user = vsz_limit = 4294967295 } shutdown_clients = yes ssl = yes ssl_ca = ssl_cert = </etc/dovecot/imap.zu-con.org.pem ssl_cert_username_field = commonName ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL ssl_key = </etc/dovecot/imap.zu-con.org.key ssl_key_password = ssl_parameters_file = ssl-parameters.dat ssl_parameters_regenerate = 168 ssl_require_client_cert = no ssl_username_from_cert = no ssl_verify_client_cert = no syslog_facility = mail userdb { args = system_groups_user=%u blocking=yes driver = passwd } valid_chroot_dirs = verbose_auth = no verbose_proctitle = no verbose_ssl = no version_ignore = no Regards, Matthias
e-frog
2010-Jun-20 08:19 UTC
[Dovecot] coredump while accessing virtual folder with dovecot 2.0
On 19.06.2010 23:29, wrote Matthias Rieber:> Hi, > > I get a core dump with 2.0.beta6 (573cb66e9180) when I access virtual > folders with the master user. Since ACLs are active I have to set a global > ACL in .DEFAULTS to access all folders. > > Coredump: > > Core was generated by `dovecot/imap'. > Program terminated with signal 11, Segmentation fault. > [New process 15910] > #0 0x00002afabdfbd6a2 in virtual_config_free (mbox=0x10a34128) at > ../../../src/lib/array.h:198 > 198 *count_r = array->buffer->used / array->element_size;I'm seeing the same crash: http://www.dovecot.org/list/dovecot/2010-June/049735.html The attached patch fixed it for me. It's not yet fixed in hg however. Regards, e-frog -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: virtual.patch URL: <http://dovecot.org/pipermail/dovecot/attachments/20100620/ae867d23/attachment-0001.pl>
Matthias Rieber
2010-Jun-20 09:43 UTC
[Dovecot] coredump while accessing virtual folder with dovecot 2.0
Hi, On Sun, 20 Jun 2010 10:19:25 +0200, e-frog <e-frog at gmx.de> wrote:> On 19.06.2010 23:29, wrote Matthias Rieber: >> Hi, >> >> I get a core dump with 2.0.beta6 (573cb66e9180) when I access virtual >> folders with the master user. Since ACLs are active I have to set a >> global >> ACL in .DEFAULTS to access all folders. >> >> Coredump: >> >> Core was generated by `dovecot/imap'. >> Program terminated with signal 11, Segmentation fault. >> [New process 15910] >> #0 0x00002afabdfbd6a2 in virtual_config_free (mbox=0x10a34128) at >> ../../../src/lib/array.h:198 >> 198 *count_r = array->buffer->used / array->element_size; > > I'm seeing the same crash: > > http://www.dovecot.org/list/dovecot/2010-June/049735.html > > The attached patch fixed it for me. It's not yet fixed in hg however.This patch works for me as well! Regards, Matthias