doveadm quota recalc returns a Segmentation fault

Aki Tuomi aki.tuomi at dovecot.fi
Sat Sep 3 12:19:45 UTC 2016


> On September 3, 2016 at 1:30 PM Alessio Cecchi <alessio at skye.it> wrote:
> 
> 
> Hi,
> 
> with the latest dovecot-ee version (2.2.25.4 (5cb7c97)) if I run 
> “doveadm quota recalc -u alessio at skye.it” dovecot return a “Segmentation 
> fault” (but the quota is update fine). Since dovecot version 2.2.24.3 
> (55cdc32) works fine.
> 
> This is my quota backends configuration:
> 
> plugin {
>    quota = maildir:UserQuota
>    quota2 = dict:Quota Usage::noenforcing:proxy::sqlquota
> }
> dict {
>    sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
> }
> 
> I found that if I comment the line “quota2 = dict:…” doveadm quota 
> recalc works fine. I have two quota backends because with dict I can 
> store everybody's current quota usage in a SQL database for fast 
> retrieving (like quota_clone plugin but I cannot switch to it 
> immediately).
> 
> The backtrace:
> 
> # gdb --args doveadm quota recalc -u alessio at skye.it
> GNU gdb (GDB) Red Hat Enterprise Linux (7.2-90.el6)
> Copyright (C) 2010 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 "x86_64-redhat-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /usr/bin/doveadm...Reading symbols from 
> /usr/lib/debug/usr/bin/doveadm.debug...done.
> done.
> 
> (gdb) run
> Starting program: /usr/bin/doveadm quota recalc -u alessio at skye.it
> [Thread debugging using libthread_db enabled]
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00007ffff73ed245 in io_loop_handler_run (ioloop=0x1006b1930) at 
> ioloop.c:612
> 612		io_loop_handler_run_internal(ioloop);
> Missing separate debuginfos, use: debuginfo-install 
> bzip2-libs-1.0.5-7.el6_0.x86_64 cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64 
> dovecot-ee-pigeonhole-2.2.25.4-4.x86_64 glibc-2.12-1.192.el6.x86_64 
> nspr-4.11.0-1.el6.x86_64 nss-3.21.0-8.el6.x86_64 
> nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64 nss-util-3.21.0-2.el6.x86_64 
> openldap-2.4.40-12.el6.x86_64 zlib-1.2.3-29.el6.x86_64
> (gdb) bt full
> #0  0x00007ffff73ed245 in io_loop_handler_run (ioloop=0x1006b1930) at 
> ioloop.c:612
> No locals.
> #1  0x00007ffff73ed3e8 in io_loop_run (ioloop=0x6b1930) at ioloop.c:588
>          __FUNCTION__ = "io_loop_run"
> #2  0x00007ffff73ac45c in client_dict_wait (_dict=0x6b15f0) at 
> dict-client.c:653
>          dict = 0x6b15f0
> #3  0x00007ffff636f85f in dict_quota_deinit (_root=<value optimized 
> out>) at quota-dict.c:106
>          root = 0x6b12f0
>          __FUNCTION__ = "dict_quota_deinit"
> #4  0x00007ffff636d326 in quota_root_deinit (root=0x6b12f0) at 
> quota.c:279
>          pool = 0x6b1400
> #5  0x00007ffff636d381 in quota_deinit (_quota=0x6aeae8) at quota.c:389
>          quota = 0x6ac0b0
>          roots = <value optimized out>
>          i = <value optimized out>
>          count = 2
> #6  0x00007ffff637240d in quota_user_deinit (user=0x6ac7b0) at 
> quota-storage.c:538
>          quser = 0x6aead8
>          quota_set = 0x6b07c0
> #7  0x00007ffff76a9b52 in mail_user_unref (_user=<value optimized out>) 
> at mail-user.c:174
>          user = 0x6ac7b0
>          __FUNCTION__ = "mail_user_unref"
> #8  0x00000000004216b4 in doveadm_mail_next_user (ctx=0x69bbe0, 
> cctx=<value optimized out>, error_r=0x7fffffffe1c0)
>      at doveadm-mail.c:403
>          input = {module = 0x0, service = 0x4569d9 "doveadm", username = 
> 0x681288 "alessio at skye.it", session_id = 0x0,
>            session_id_prefix = 0x0, local_ip = {family = 0, u = {ip6 = 
> {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>,
>                    __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = 
> {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, remote_ip = {
>              family = 0, u = {ip6 = {__in6_u = {__u6_addr8 = '\000' 
> <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
>                    __u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, 
> local_port = 0, remote_port = 0, userdb_fields = 0x0,
>            flags_override_add = 0, flags_override_remove = 0, 
> no_userdb_lookup = 0, debug = 0}
>          error = <value optimized out>
>          ip = <value optimized out>
>          ret = <value optimized out>
>          __FUNCTION__ = "doveadm_mail_next_user"
> #9  0x00000000004218dc in doveadm_mail_cmd_exec (ctx=0x69bbe0, 
> cctx=0x7fffffffe400, wildcard_user=0x0) at doveadm-mail.c:592
>          ret = <value optimized out>
>          error = <value optimized out>
> #10 0x0000000000422c7d in doveadm_cmd_ver2_to_mail_cmd_wrapper 
> (cctx=0x7fffffffe400) at doveadm-mail.c:1053
>          mctx = 0x69bbe0
>          wildcard_user = <value optimized out>
>          fieldstr = 0x456c52 "-u"
>          i = <value optimized out>
> ---Type <return> to continue, or q <return> to quit---
>          mail_cmd = {alloc = 0x7ffff573fba0 <cmd_quota_recalc_alloc>, 
> name = 0x7ffff573ffc5 "quota recalc",
>            usage_args = 0x7ffff573ff7f ""}
>          args_pos = <value optimized out>
> #11 0x00000000004303b6 in doveadm_cmd_run_ver2 (argc=3, argv=0x6883a0, 
> cctx=0x7fffffffe400) at doveadm-cmd.c:523
>          param = <value optimized out>
>          pargv = {arr = {buffer = 0x680a28, element_size = 104}, v = 
> 0x680a28, v_modifiable = 0x680a28}
>          pargc = <value optimized out>
>          c = <value optimized out>
>          li = 32767
>          pool = 0x680858
>          optbuf = 0x680870
>          __FUNCTION__ = "doveadm_cmd_run_ver2"
> #12 0x0000000000430467 in doveadm_cmd_try_run_ver2 (cmd_name=<value 
> optimized out>, argc=3, argv=0x6883a0, cctx=0x7fffffffe400)
>      at doveadm-cmd.c:446
>          cmd = <value optimized out>
> #13 0x0000000000432bdc in main (argc=4, argv=0x688398) at doveadm.c:379
>          cctx = {cmd = 0x69abf8, argc = 4, argv = 0x680a60, username = 
> 0x681288 "alessio at skye.it", cli = true, tcp_server = false,
>            local_ip = {family = 0, u = {ip6 = {__in6_u = {__u6_addr8 = 
> '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0,
>                      0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 
> 0}}}, remote_ip = {family = 0, u = {ip6 = {__in6_u = {
>                    __u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = 
> {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}},
>                ip4 = {s_addr = 0}}}, local_port = 0, remote_port = 0, 
> conn = 0x0}
>          cmd_name = <value optimized out>
>          quick_init = false
>          c = <value optimized out>
> (gdb)
> 
> I hope can be fixed.
> Thanks
> -- 
> Alessio Cecchi
> Postmaster AT http://www.qboxmail.it
> http://www.linkedin.com/in/alessice


Thank you for your report. We'll look into it.

Aki


More information about the dovecot mailing list