[Dovecot] coredump while accessing virtual folder with dovecot 2.0

Matthias Rieber ml-dovecot at zu-con.org
Sun Jun 20 00:29:15 EEST 2010


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


More information about the dovecot mailing list