Birger Brunswiek
2011-Mar-11 21:57 UTC
[Dovecot] dict crashes with multiple map definitions
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 } }
On Fri, 2011-03-11 at 22:57 +0100, Birger Brunswiek wrote:> Mar 9 02:27:52 xxx dovecot: dict: Panic: file driver-pgsql.c: line 529 > (do_query): assertion failed: (db->sync_result == NULL)There have been several fixes done to pgsql backend in v2.0 and this is most likely fixed in v2.0.11. I don't really have time to debug v1.2..