[Dovecot] dict crashes with multiple map definitions
Birger Brunswiek
birger at brunswiek.org
Fri Mar 11 23:57:55 EET 2011
Hi,
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
1.2.15
# 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_plugins(managesieve):
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
namespace:
type: private
separator: /
inbox: yes
list: yes
subscriptions: yes
namespace:
type: shared
separator: /
prefix: shared/%%n/
location:
maildir:/var/mail/%%u/mailbox:INDEX=/var/mail/%u/mailbox/shared/%%u
list: children
lda:
postmaster_address: postmaster at foo.bar
mail_plugins: sieve acl
auth default:
mechanisms: plain gssapi
passdb:
driver: pam
args: blocking=yes dovecot
userdb:
driver: static
args: uid=vmail gid=vmail home=/var/mail/%u allow_all_users=yes
socket:
type: listen
client:
path: /var/spool/postfix/private/auth
mode: 432
user: postfix
group: postfix
master:
path: /var/run/dovecot/auth-master
mode: 384
user: vmail
plugin:
acl: vfile
acl_shared_dict: proxy::acl
sieve: ~/.dovecot.sieve
sieve_dir: ~/sieve
dict:
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