[Dovecot] Segfault in dovecot 1.2rc2 with quota + public namespace enabled

Markus Werner markiwer at googlemail.com
Tue Apr 7 16:53:56 EEST 2009


Hi,

I have configured a public namespace ("#Shared"). Since dovecot 1.2rc2
(1.1.11 worked fine) I get a segfault, if I try to access a folder
under this namespace when quota plugin is enabled. When the quota
plugin is disabled, accessing those folders works.


$ dovecot -n

# 1.2.rc2: /opt/dovecot/etc/dovecot.conf
# OS: Linux 2.6.26-1-686 i686 Debian 5.0
base_dir: /var/run/dovecot
protocols: imap pop3
listen: 127.0.0.1,192.168.128.151
ssl_listen: 192.168.128.151
ssl_ca_file: /opt/dovecot/etc/certs/cacert.pem
ssl_cert_file: /opt/dovecot/etc/certs/asterixCert.pem
ssl_key_file: /opt/dovecot/etc/certs/asterixKey.pem
ssl_parameters_regenerate: 0
ssl_cipher_list: ALL:!LOW:!SSLv2
disable_plaintext_auth: no
login_dir: /var/run/dovecot/login
login_executable(default): /opt/dovecot/libexec/dovecot/imap-login
login_executable(imap): /opt/dovecot/libexec/dovecot/imap-login
login_executable(pop3): /opt/dovecot/libexec/dovecot/pop3-login
login_user: dovecotl
login_process_per_connection: no
login_processes_count: 1
login_max_processes_count: 3
max_mail_processes: 100
mail_max_userip_connections: 8
first_valid_uid: 2000
last_valid_uid: 2000
first_valid_gid: 2000
last_valid_gid: 2000
mail_access_groups: dovecot
mail_uid: 2000
mail_gid: 2000
mail_location: maildir:~/Maildir
mail_debug(default): yes
mail_debug(imap): yes
mail_debug(pop3): no
mail_executable(default): /opt/dovecot/libexec/dovecot/imap
mail_executable(imap): /opt/dovecot/libexec/dovecot/imap
mail_executable(pop3): /opt/dovecot/libexec/dovecot/pop3
mail_plugins(default): quota imap_quota acl imap_acl fts fts_squat
mail_plugins(imap): quota imap_quota acl imap_acl fts fts_squat
mail_plugins(pop3):
mail_plugin_dir(default): /opt/dovecot/lib/dovecot/imap
mail_plugin_dir(imap): /opt/dovecot/lib/dovecot/imap
mail_plugin_dir(pop3): /opt/dovecot/lib/dovecot/pop3
pop3_no_flag_updates(default): no
pop3_no_flag_updates(imap): no
pop3_no_flag_updates(pop3): yes
namespace:
  type: private
  separator: /
  prefix: INBOX/
  inbox: yes
  list: yes
  subscriptions: yes
namespace:
  type: public
  separator: /
  prefix: #Shared/
  location: maildir:/var/spool/dovecot/sharedfolders:INDEX=~/Maildir/index/public:CONTROL=~/Maildir/control/public
  list: yes
  subscriptions: yes
namespace:
  type: shared
  separator: /
  prefix: #User/%%u/
  location: maildir:%%h/Maildir:INDEX=~/Maildir/index/shared/%%u
  list: yes
auth default:
  mechanisms: plain login
  user: dovecota
  worker_max_count: 3
  passdb:
    driver: passwd-file
    args: /opt/dovecot/etc/passwd
  userdb:
    driver: passwd-file
    args: /opt/dovecot/etc/passwd
  socket:
    type: listen
    client:
      path: /var/run/dovecot/auth-client
      mode: 432
      user: postfix
      group: postfix
    master:
      path: /var/run/dovecot/auth-master
      mode: 432
      user: dovecota
      group: dovecot
plugin:
  sieve: ~/.dovecot/.dovecot.sieve
  acl: vfile:/opt/dovecot/etc/dovecot-acls
  acl_shared_dict: file:/var/lib/dovecot/shared-mailboxes.db
  acl_anyone: allow
  quota: dict:user::file:%h/Maildir/dovecot-quota
  quota_rule: *:storage=10G:messages=500000
  fts: squat
  fts_squat: partial=4 full=10


$ gdb /opt/dovecot/libexec/dovecot/imap /var/spool/dovecot/users/markus/core

GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/i686/cmov/libdl.so.2...done.
Loaded symbols for /lib/i686/cmov/libdl.so.2
Reading symbols from /lib/i686/cmov/libc.so.6...done.
Loaded symbols for /lib/i686/cmov/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /opt/dovecot/lib/dovecot/imap/lib01_acl_plugin.so...done.
Loaded symbols for /opt/dovecot/lib/dovecot/imap/lib01_acl_plugin.so
Reading symbols from
/opt/dovecot/lib/dovecot/imap/lib02_imap_acl_plugin.so...done.
Loaded symbols for /opt/dovecot/lib/dovecot/imap/lib02_imap_acl_plugin.so
Reading symbols from /opt/dovecot/lib/dovecot/imap/lib10_quota_plugin.so...done.
Loaded symbols for /opt/dovecot/lib/dovecot/imap/lib10_quota_plugin.so
Reading symbols from
/opt/dovecot/lib/dovecot/imap/lib11_imap_quota_plugin.so...done.
Loaded symbols for /opt/dovecot/lib/dovecot/imap/lib11_imap_quota_plugin.so
Reading symbols from /opt/dovecot/lib/dovecot/imap/lib20_fts_plugin.so...done.
Loaded symbols for /opt/dovecot/lib/dovecot/imap/lib20_fts_plugin.so
Reading symbols from
/opt/dovecot/lib/dovecot/imap/lib21_fts_squat_plugin.so...done.
Loaded symbols for /opt/dovecot/lib/dovecot/imap/lib21_fts_squat_plugin.so
Reading symbols from /lib/i686/cmov/libnss_compat.so.2...done.
Loaded symbols for /lib/i686/cmov/libnss_compat.so.2
Reading symbols from /lib/i686/cmov/libnsl.so.1...done.
Loaded symbols for /lib/i686/cmov/libnsl.so.1
Reading symbols from /lib/i686/cmov/libnss_nis.so.2...done.
Loaded symbols for /lib/i686/cmov/libnss_nis.so.2
Reading symbols from /lib/i686/cmov/libnss_files.so.2...done.
Loaded symbols for /lib/i686/cmov/libnss_files.so.2
Core was generated by `imap'.
Program terminated with signal 11, Segmentation fault.
[New process 31957]
#0  0x080ec1e2 in array_idx_modifiable_i (array=0x18, idx=0) at array.c:10
10              pos = idx * array->element_size;
(gdb) bt full
#0  0x080ec1e2 in array_idx_modifiable_i (array=0x18, idx=0) at array.c:10
        pos = 0
#1  0xb7dbf88a in quota_get_mail_user_quota (user=0x0) at quota-storage.c:482
No locals.
#2  0xb7db98d8 in quota_transaction_begin (box=0x9771440) at quota.c:739
        user = (struct mail_user *) 0x0
#3  0xb7dbfdee in quota_mailbox_transaction_begin (box=0x9771440,
flags=MAILBOX_TRANSACTION_FLAG_HIDE) at quota-storage.c:87
        t = (struct mailbox_transaction_context *) 0x977bac0
        qt = <value optimized out>
#4  0xb7daf55e in fts_transaction_begin (box=0x9771440,
flags=MAILBOX_TRANSACTION_FLAG_HIDE) at fts-storage.c:937
        fbox = (struct fts_mailbox *) 0x978ac80
        t = <value optimized out>
#5  0x080b38ae in mailbox_transaction_begin (box=0x9771440,
flags=MAILBOX_TRANSACTION_FLAG_HIDE) at mail-storage.c:787
        trans = (struct mailbox_transaction_context *) 0x18
#6  0x08069f2b in imap_fetch_begin (ctx=0x9769d18) at imap-fetch.c:349
No locals.
#7  0x08061bb0 in cmd_fetch (cmd=0x9769bd8) at cmd-fetch.c:226
        client = <value optimized out>
        ctx = (struct imap_fetch_context *) 0x9769d18
        args = (const struct imap_arg *) 0x976ec58
        next_arg = (const struct imap_arg *) 0x18
        search_args = (struct mail_search_args *) 0x9773ba8
        messageset = <value optimized out>
        ret = <value optimized out>
#8  0x0806700c in client_command_input (cmd=0x9769bd8) at client.c:603
        client = (struct client *) 0x9769948
        command = <value optimized out>
        __PRETTY_FUNCTION__ = "client_command_input"
#9  0x080670a9 in client_command_input (cmd=0x9769bd8) at client.c:652
        client = (struct client *) 0x9769948
        command = <value optimized out>
        __PRETTY_FUNCTION__ = "client_command_input"
#10 0x080676ed in client_handle_input (client=0x9769948) at client.c:693
        _data_stack_cur_id = 3
        ret = <value optimized out>
        remove_io = <value optimized out>
        handled_commands = false
#11 0x08067ba3 in client_input (client=0x9769948) at client.c:748
        cmd = <value optimized out>
        output = (struct ostream *) 0x9769afc
        bytes = <value optimized out>
        __PRETTY_FUNCTION__ = "client_input"
#12 0x080f73f0 in io_loop_handler_run (ioloop=0x9762ae8) at ioloop-epoll.c:208
        ctx = (struct ioloop_handler_context *) 0x9762bf0
        event = (const struct epoll_event *) 0x9762c30
        list = (struct io_list *) 0x9769b80
        io = (struct io_file *) 0x9769b58
        tv = {tv_sec = 1, tv_usec = 729686}
        t_id = 2
        msecs = <value optimized out>
        ret = 1
        i = 0
        j = 0
        call = <value optimized out>
#13 0x080f6880 in io_loop_run (ioloop=0x9762ae8) at ioloop.c:338
No locals.
#14 0x080704c5 in main (argc=Cannot access memory at address 0x0
) at main.c:320
No locals.


-- 
Markus


More information about the dovecot mailing list