[Dovecot] dict crashes with multiple map definitions

Birger Brunswiek birger at brunswiek.org
Fri Mar 11 23:57:55 EET 2011

I get a crash in dict if I use multiple map sections. Each one of them 
works fine by their own. I managed to convince dovecot to create dump 
files to debug this, but I can't figure out how to do the same for dict. 
How can I do this? Anyway, perhaps someone already know's what's wrong 
by looking at what I do in the sql dict configuration.

Mar  9 02:27:52 xxx dovecot: dict: pgsql: Connected to dovecot
Mar  9 02:27:52 xxx dovecot: dict: Panic: file driver-pgsql.c: line 529 
(do_query): assertion failed: (db->sync_result == NULL)
Mar  9 02:27:52 xxx dovecot: dict: Raw backtrace: dict() [0x418a9a] -> 
dict() [0x418b03] -> dict() [0x418206] -> dict() [0x414124] -> dict() 
[0x414b07] -> dict() [0x40e0dc] -> dict() [0x40e20a] -> dict() 
[0x40b77f] -> dict() [0x40b8b9] -> dict() [0x40ba57] -> 
dict(io_loop_handler_run+0xbd) [0x41d87d] -> dict(io_loop_run+0x18) 
[0x41ccf8] -> dict(main+0x114) [0x40bda4] -> 
/lib/libc.so.6(__libc_start_main+0xfd) [0x7f9a10cdbc4d] -> dict() [0x40ad69]
Mar  9 02:27:52 xxx dovecot: IMAP(xxx): 
read(/var/run/dovecot/dict-server) failed: Remote disconnected
Mar  9 02:27:52 xxx dovecot: IMAP(xxx): acl: dict iteration failed, 
can't update dict
Mar  9 02:27:52 xxx dovecot: dovecot: child 11180 (dict) killed with 
signal 6 (core not dumped)

# dovecot --version

# dovecot -n
# 1.2.15: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-5-amd64 x86_64 Debian 6.0 ext3
log_timestamp: %Y-%m-%d %H:%M:%S
protocols: imap imaps managesieve
listen: [::]
ssl_cert_file: /etc/ssl/certs/foo.bar.pem
ssl_key_file: /etc/ssl/private/foo.bar.key.pem
login_dir: /var/run/dovecot/login
login_executable(default): /usr/lib/dovecot/imap-login
login_executable(imap): /usr/lib/dovecot/imap-login
login_executable(managesieve): /usr/lib/dovecot/managesieve-login
mail_privileged_group: mail
mail_location: maildir:/var/mail/%u/mailbox
mbox_write_locks: fcntl dotlock
mail_executable(default): /usr/lib/dovecot/imap
mail_executable(imap): /usr/lib/dovecot/imap
mail_executable(managesieve): /usr/lib/dovecot/managesieve
mail_plugins(default): acl imap_acl
mail_plugins(imap): acl imap_acl
mail_plugin_dir(default): /usr/lib/dovecot/modules/imap
mail_plugin_dir(imap): /usr/lib/dovecot/modules/imap
mail_plugin_dir(managesieve): /usr/lib/dovecot/modules/managesieve
   type: private
   separator: /
   inbox: yes
   list: yes
   subscriptions: yes
   type: shared
   separator: /
   prefix: shared/%%n/
   list: children
   postmaster_address: postmaster at foo.bar
   mail_plugins: sieve acl
auth default:
   mechanisms: plain gssapi
     driver: pam
     args: blocking=yes dovecot
     driver: static
     args: uid=vmail gid=vmail home=/var/mail/%u allow_all_users=yes
     type: listen
       path: /var/spool/postfix/private/auth
       mode: 432
       user: postfix
       group: postfix
       path: /var/run/dovecot/auth-master
       mode: 384
       user: vmail
   acl: vfile
   acl_shared_dict: proxy::acl
   sieve: ~/.dovecot.sieve
   sieve_dir: ~/sieve
   acl: pgsql:/etc/dovecot/dovecot-dict-sql.conf

# cat /etc/dovecot/dovecot-dict-sql.conf
connect = host=foo.bar dbname=dovecot user=dovecot password=xxx
map {
   pattern = shared/shared-boxes/user/$owner/$user
   table = user_shares
   value_field = dummy
   fields {
     owner = $owner
     usr = $user
map {
   pattern = shared/shared-boxes/anyone/$owner
   table = global_shares
   value_field = dummy
   fields {
     owner = $owner
map {
   pattern = shared/shared-boxes/group/$group/$owner
   table = group_shares
   value_field = dummy
   fields {
     grp = $group
     owner = $owner

More information about the dovecot mailing list