BUG: panic when using fs:posix as dict for acl_shared_dict

aki.tuomi at dovecot.fi aki.tuomi at dovecot.fi
Fri Dec 13 17:47:34 EET 2019


It's not very high priority I'm afraid. Did you try using sqlite instead?

Aki

> On 13/12/2019 17:40 Aragon Gouveia <aragon at phat.za.net> wrote:
> 
>  
> Hi Aki,
> 
> I'm not sure if this bug was worked on?  Sadly I ran into it too 
> recently, on version 2.3.4.1.
> 
> 
> Regards,
> 
> Aragon
> 
> 
> 
> On 2018/02/07 13:23, Aki Tuomi wrote:
> > Hi!
> >
> > Thank you for reporting this issue. We'll look into it. Maybe you can
> > use sqlite3 instead as workaround?
> >
> > Aki
> >
> >
> > On 07.02.2018 14:22, Marco Giunta wrote:
> >> Hi,
> >> I'm using Dovecot 2.2.33.2 on a RHEL 7, new installation. When I use
> >> fs:posix as dict for acl_shared_dict, like in Dovecot wiki
> >> (https://wiki.dovecot.org/SharedMailboxes/ClusterSetup),
> >> doveadm-server crash with error:
> >>
> >> # doveadm acl set -u USERNAME FOLDER user=DEST_USERNAME lookup read
> >> write-seen
> >>
> >> doveadm(USERNAME): Panic: file dict-fs.c: line 127
> >> (fs_dict_iterate_init): assertion failed: ((flags &
> >> DICT_ITERATE_FLAG_RECURSE) == 0)
> >> doveadm(USERNAME): Error: Raw backtrace:
> >> /usr/lib64/dovecot/libdovecot.so.0(+0x9f3de) [0x7f0e4a4b23de] ->
> >> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x2a)
> >> [0x7f0e4a4b244a] -> /usr/lib64/dovecot/libdovecot.so.0(i_fatal+0)
> >> [0x7f0e4a44377c] -> /usr/lib64/dovecot/libdovecot.so.0(+0x31688)
> >> [0x7f0e4a444688] ->
> >> /usr/lib64/dovecot/libdovecot.so.0(dict_iterate_init_multiple+0x4d)
> >> [0x7f0e4a47cadd] ->
> >> /usr/lib64/dovecot/libdovecot.so.0(dict_iterate_init+0x29)
> >> [0x7f0e4a47cb89] ->
> >> /usr/lib64/dovecot/lib01_acl_plugin.so(acl_lookup_dict_rebuild+0x3e1)
> >> [0x7f0e49a40371] ->
> >> /usr/lib64/dovecot/lib01_acl_plugin.so(acl_backend_vfile_acllist_rebuild+0x488)
> >> [0x7f0e49a3dd18] ->
> >> /usr/lib64/dovecot/lib01_acl_plugin.so(acl_backend_vfile_object_update+0x3c7)
> >> [0x7f0e49a3e867] ->
> >> /usr/lib64/dovecot/lib01_acl_plugin.so(acl_mailbox_update_acl+0x68)
> >> [0x7f0e49a41e28] ->
> >> /usr/lib64/dovecot/doveadm/lib10_doveadm_acl_plugin.so(+0x2c11)
> >> [0x7f0e48da1c11] ->
> >> /usr/lib64/dovecot/doveadm/lib10_doveadm_acl_plugin.so(+0x3060)
> >> [0x7f0e48da2060] -> doveadm(+0x2b41c) [0x556f1280b41c] ->
> >> doveadm(+0x2c01a) [0x556f1280c01a] ->
> >> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x23b) [0x556f1280ce7b]
> >> -> doveadm(doveadm_cmd_run_ver2+0x50c) [0x556f1281c73c] ->
> >> doveadm(doveadm_cmd_try_run_ver2+0x37) [0x556f1281c7d7] ->
> >> doveadm(main+0x1e4) [0x556f127fb944] ->
> >> /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f0e4a071c05] ->
> >> doveadm(+0x1bd35) [0x556f127fbd35]
> >> Aborted
> >>
> >> Attached coredump and configuration.
> >>
> >> I'm not a programmer, but seems that assert is raised by
> >> 'fs_dict_iterate_init' function inside 'src/lib-dict-extra/dict-fs.c':
> >>
> >> static struct dict_iterate_context *
> >> fs_dict_iterate_init(struct dict *_dict, const char *const *paths,
> >>               enum dict_iterate_flags flags)
> >> {
> >> ...
> >>          /* these flags are not supported for now */
> >>      i_assert((flags & DICT_ITERATE_FLAG_RECURSE) == 0);
> >> ...
> >>
> >>
> >> because it is called by 'acl_lookup_dict_iterate_read' function in
> >> file 'src/plugins/acl/acl-lookup-dict.c'
> >>
> >> static void acl_lookup_dict_iterate_read(struct acl_lookup_dict_iter
> >> *iter)
> >> {
> >> ...
> >> dict_iter = dict_iterate_init(iter->dict->dict, prefix,
> >>                        DICT_ITERATE_FLAG_RECURSE);
> >> ...
> >>
> >> with DICT_ITERATE_FLAG_RECURSE set.
> >>
> >>
> >> Same problem also with Dovecot 2.3.0.
> >>
> >> Thanks,
> >>    Marco
> >>
> >>


More information about the dovecot mailing list