doveadm quota recalc returns a Segmentation fault

Alessio Cecchi alessio at skye.it
Sat Sep 3 10:30:55 UTC 2016


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


More information about the dovecot mailing list