doveadm batch crash

Stephan Bosch stephan at rename-it.nl
Wed Jan 30 02:13:37 EET 2019



Op 13/12/2018 om 23:00 schreef Jonathan Casiot via dovecot:
>
>
> On 08/12/2018 19:53, Jonathan Casiot via dovecot wrote:
>>
>> Hi
>>
>> I'm having an issue with doveadm batch - the following command always 
>> crashes:
>>
>> doveadm batch : mailbox status all inbox
>>
>> Whereas the following work as expected:
>>
>> doveadm mailbox status all inbox
>> doveadm batch : mailbox list
>>
>>
>> Any assistance gratefully received.

Thanks for reporting this. We are looking into it. Tracking internally 
as DOP-808.

Regards,

Stephan.


>>
>>
>> Debug output from the crash:
>>
>> Debug: Loading modules from directory: /usr/lib64/dovecot
>> Debug: Module loaded: /usr/lib64/dovecot/lib01_acl_plugin.so
>> Debug: Module loaded: /usr/lib64/dovecot/lib10_mail_crypt_plugin.so
>> Debug: Module loaded: /usr/lib64/dovecot/lib90_stats_plugin.so
>> Debug: Loading modules from directory: /usr/lib64/dovecot/doveadm
>> Debug: Module loaded: 
>> /usr/lib64/dovecot/doveadm/lib10_doveadm_acl_plugin.so
>> Debug: Skipping module doveadm_expire_plugin, because dlopen() 
>> failed: /usr/lib64/dovecot/doveadm/lib10_doveadm_expire_plugin.so: 
>> undefined symbol: expire_set_deinit (this is usually intentional, so 
>> just ignore this message)
>> Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: 
>> /usr/lib64/dovecot/doveadm/lib10_doveadm_quota_plugin.so: undefined 
>> symbol: quota_user_module (this is usually intentional, so just 
>> ignore this message)
>> Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() 
>> failed: 
>> /usr/lib64/dovecot/doveadm/lib20_doveadm_fts_lucene_plugin.so: 
>> undefined symbol: lucene_index_iter_deinit (this is usually 
>> intentional, so just ignore this message)
>> Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: 
>> /usr/lib64/dovecot/doveadm/lib20_doveadm_fts_plugin.so: undefined 
>> symbol: fts_user_get_language_list (this is usually intentional, so 
>> just ignore this message)
>> Debug: Module loaded: 
>> /usr/lib64/dovecot/doveadm/libdoveadm_mail_crypt_plugin.so
>> doveadm(jc): Debug: Effective uid=1001, gid=100, home=/home/jc
>> doveadm(jc): Debug: acl: No acl_shared_dict setting - shared mailbox 
>> listing is disabled
>> doveadm(jc): Debug: mail_crypt_plugin: mail_crypt_curve setting 
>> missing - generating EC keys disabled
>> doveadm(jc): Debug: Namespace inbox: type=private, prefix=, sep=., 
>> inbox=yes, hidden=no, list=yes, subscriptions=yes 
>> location=mdbox:~/mdbox:ALT=~/Archive/tape/mdbox
>> doveadm(jc): Debug: fs: root=/home/jc/mdbox, index=, indexpvt=, 
>> control=, inbox=, alt=/home/jc/Archive/tape/mdbox
>> doveadm(jc): Debug: acl: initializing backend with data: vfile
>> doveadm(jc): Debug: acl: acl username = jc
>> doveadm(jc): Debug: acl: owner = 1
>> doveadm(jc): Debug: acl vfile: Global ACLs disabled
>> doveadm(jc): Panic: file mail-storage.c: line 875 
>> (mailbox_set_reason): assertion failed: (reason != NULL)
>> doveadm(jc): Error: Raw backtrace: 
>> /usr/lib64/dovecot/libdovecot.so.0(+0xa0e9e) [0x7fc993023e9e] -> 
>> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x2a) 
>> [0x7fc993023f0a] -> /usr/lib64/dovecot/libdovecot.so.0(i_fatal+0) 
>> [0x7fc992fb3c97] -> 
>> /usr/lib64/dovecot/libdovecot-storage.so.0(+0x49856) [0x7fc993301856] 
>> -> /usr/bin/doveadm(+0x348e2) [0x5631dbb5f8e2] -> 
>> /usr/bin/doveadm(+0x2e1ad) [0x5631dbb591ad] -> 
>> /usr/bin/doveadm(+0x2bd2c) [0x5631dbb56d2c] -> 
>> /usr/bin/doveadm(+0x2c92a) [0x5631dbb5792a] -> 
>> /usr/bin/doveadm(doveadm_mail_try_run+0x215) [0x5631dbb58285] -> 
>> /usr/bin/doveadm(main+0x46a) [0x5631dbb473fa] -> 
>> /lib64/libc.so.6(__libc_start_main+0xf5) [0x7fc992bd83d5] -> 
>> /usr/bin/doveadm(+0x1c565) [0x5631dbb47565]
>> Aborted (core dumped)
>>
>>
>> And doveconf -n output:
>>
>> # 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf
>> # OS: Linux 3.10.0-957.1.3.el7.x86_64 x86_64 CentOS Linux release 
>> 7.6.1810 (Core)
>> # Hostname: ### redacted ###
>> first_valid_gid = 100
>> first_valid_uid = 1000
>> last_valid_gid = 100
>> last_valid_uid = 1999
>> listen = *
>> login_greeting = IMAP ready
>> login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e 
>> session=<%{session}> %k
>> mail_attribute_dict = file:%h/mdbox/dovecot-attributes
>> mail_location = mdbox:~/mdbox:ALT=~/Archive/tape/mdbox
>> mail_plugins = acl stats mail_crypt
>> mailbox_list_index = yes
>> mdbox_rotate_size = 16 M
>> namespace inbox {
>>    inbox = yes
>>    location =
>>    mailbox Drafts {
>>      special_use = \Drafts
>>    }
>>    mailbox Junk {
>>      special_use = \Junk
>>    }
>>    mailbox Sent {
>>      special_use = \Sent
>>    }
>>    mailbox "Sent Messages" {
>>      special_use = \Sent
>>    }
>>    mailbox Trash {
>>      special_use = \Trash
>>    }
>>    prefix =
>>    separator = .
>> }
>> passdb {
>>    driver = pam
>> }
>> plugin {
>>    acl = vfile
>>    mail_crypt_global_private_key = <### redacted ###
>>    mail_crypt_global_public_key = <### redacted ###
>>    mail_crypt_save_version = 2
>>    stats_memory_limit = 16 M
>>    stats_refresh = 30 secs
>>    stats_track_cmds = yes
>> }
>> postmaster_address = ### redacted ###
>> protocols = imap
>> service auth {
>>    unix_listener /var/spool/postfix/private/auth {
>>      group = postfix
>>      mode = 0660
>>      user = postfix
>>    }
>> }
>> service imap-login {
>>    process_limit = 200
>>    process_min_avail = 4
>>    service_count = 1
>> }
>> service stats {
>>    fifo_listener stats-mail {
>>      group = users
>>      mode = 01224
>>    }
>> }
>> ssl = required
>> ssl_cert = <### redacted ###
>> ssl_key =  # hidden, use -P to show it
>> ssl_prefer_server_ciphers = yes
>> ssl_protocols = !SSLv2 !SSLv3 !TLSv1
>> userdb {
>>    driver = passwd
>> }
>> verbose_proctitle = yes
>> protocol imap {
>>    imap_idle_notify_interval = 10 mins
>>    imap_metadata = yes
>>    mail_max_userip_connections = 20
>>    mail_plugins = acl stats mail_crypt imap_acl imap_stats
>> }
>>
>>
>> Regards,
>>
>
> Here is the gdb output for this issue - the status values in frame 6 
> look wrong:
>
> GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7
> Copyright (C) 2013 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 batch : mailbox status all inbox
> process 9660 is executing new program: /usr/bin/doveconf
> process 9660 is executing new program: /usr/bin/doveadm
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
> doveadm(jc): Panic: file mail-storage.c: line 875 
> (mailbox_set_reason): assertion failed: (reason != NULL)
> doveadm(jc): Error: Raw backtrace: 
> /usr/lib64/dovecot/libdovecot.so.0(+0xa0e9e) [0x7ffff73ade9e] -> 
> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x2a) 
> [0x7ffff73adf0a] -> /usr/lib64/dovecot/libdovecot.so.0(i_fatal+0) 
> [0x7ffff733dc97] -> 
> /usr/lib64/dovecot/libdovecot-storage.so.0(+0x49856) [0x7ffff768b856] 
> -> /usr/bin/doveadm(+0x348e2) [0x5555555888e2] -> 
> /usr/bin/doveadm(+0x2e1ad) [0x5555555821ad] -> 
> /usr/bin/doveadm(+0x2bd2c) [0x55555557fd2c] -> 
> /usr/bin/doveadm(+0x2c92a) [0x55555558092a] -> 
> /usr/bin/doveadm(doveadm_mail_try_run+0x215) [0x555555581285] -> 
> /usr/bin/doveadm(main+0x46a) [0x5555555703fa] -> 
> /lib64/libc.so.6(__libc_start_main+0xf5) [0x7ffff6f623d5] -> 
> /usr/bin/doveadm(+0x1c565) [0x555555570565]
>
> Program received signal SIGABRT, Aborted.
> 0x00007ffff6f76207 in __GI_raise (sig=sig at entry=6) at 
> ../nptl/sysdeps/unix/sysv/linux/raise.c:55
> 55        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
> (gdb) bt full
> #0  0x00007ffff6f76207 in __GI_raise (sig=sig at entry=6) at 
> ../nptl/sysdeps/unix/sysv/linux/raise.c:55
>         resultvar = 0
>         pid = 9660
>         selftid = 9660
> #1  0x00007ffff6f778f8 in __GI_abort () at abort.c:90
>         save_stage = 2
>         act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 
> 0x1}, sa_mask = {__val = {7882532336211813423, 173, 140737344948160, 
> 93824994941896, 140737341211075, 140737488346672, 93824994941896, 513, 
> 5223750495495426816,
>               93824994941896, 140737341394611, 93824994941896, 
> 140737488346768, 140737488347136, 140737341394953, 93824994941896}}, 
> sa_flags = -147157558, sa_restorer = 0x7fffffffde01}
>         sigs = {__val = {32, 0 <repeats 15 times>}}
> #2  0x00007ffff73ade96 in default_fatal_finish (type=<optimized out>, 
> status=status at entry=0) at failures.c:201
>         backtrace = 0x5555557e9c00 
> "/usr/lib64/dovecot/libdovecot.so.0(+0xa0e9e) [0x7ffff73ade9e] -> 
> /usr/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x2a) 
> [0x7ffff73adf0a] -> /usr/lib64/dovecot/libdovecot.so.0(i_fatal+0) 
> [0x7ff"...
> #3  0x00007ffff73adf0a in default_fatal_handler (ctx=0x7fffffffdee0, 
> format=<optimized out>, args=<optimized out>) at failures.c:215
>         status = 0
> #4  0x00007ffff733dc97 in i_panic (format=format at entry=0x7ffff773c7c0 
> "file %s: line %d (%s): assertion failed: (%s)") at failures.c:275
>         ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 
> 0x0, timestamp_usecs = 0}
>         args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 
> 0x7fffffffdfe0, reg_save_area = 0x7fffffffdf20}}
> #5  0x00007ffff768b856 in mailbox_set_reason (box=<optimized out>, 
> reason=<optimized out>) at mail-storage.c:875
>         __FUNCTION__ = "mailbox_set_reason"
> #6  0x00005555555888e2 in status_mailbox (info=0x555555838c58, 
> ctx=0x5555557fe238) at doveadm-mail-mailbox-status.c:135
>         box = 0x555555838db8
>         status = {messages = 4151561466, recent = 32767, unseen = 
> 1434453976, uidvalidity = 21845, uidnext = 0, first_unseen_seq = 0, 
> first_recent_uid = 4294959296, last_cached_seq = 32767, highest_modseq 
> = 93824995016992,
>           highest_pvt_modseq = 93824995038873, keywords = 
> 0x55555582cc50, permanent_flags = 4150865472, flags = 32767, 
> permanent_keywords = 0, allow_new_keywords = 0, nonpermanent_modseqs = 
> 0, no_modseq_tracking = 0, have_guids = 0,
>           have_save_guids = 0, have_only_guid128 = 1}
>         metadata = {guid = "p\214~UUU\000\000\300e\177UUU\000", 
> virtual_size = 140737488347344, physical_size = 553903933854, 
> first_save_date = 93824995035120, cache_fields = 0x20, precache_fields 
> = (unknown: 0), backend_ns_prefix = 0x0,
>           backend_ns_type = (unknown: 48)}
> #7  cmd_mailbox_status_run (_ctx=0x5555557fe238, user=<optimized out>) 
> at doveadm-mail-mailbox-status.c:172
>         _data_stack_cur_id = 2
>         ctx = 0x5555557fe238
>         iter = 0x555555838c30
>         info = 0x555555838c58
>         ret = 0
> #8  0x00005555555821ad in cmd_batch_run (_ctx=0x5555557f64c8, 
> user=0x55555582caa8) at doveadm-mail-batch.c:41
>         cmdp__foreach_end = 0x5555557f66e0
>         ctx = 0x5555557f64c8
>         cmdp = 0x5555557f66d8
>         ret = 0
> #9  0x000055555557fd2c in doveadm_mail_next_user 
> (ctx=ctx at entry=0x5555557f64c8, cctx=cctx at entry=0x7fffffffe2b0, 
> error_r=error_r at entry=0x7fffffffe240) at doveadm-mail.c:429
>         input = {module = 0x0, service = 0x5555555b9e2b "doveadm", 
> username = 0x5555557ef7c3 "jc", session_id = 0x0, session_id_prefix = 
> 0x0, session_create_time = 0, 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 = (unknown: 0), 
> flags_override_remove = (unknown: 0),
>           no_userdb_lookup = 0, debug = 0}
>         error = 0xf9d0 <Address 0xf9d0 out of bounds>
>         ip = <optimized out>
>         ret = <optimized out>
>         __FUNCTION__ = "doveadm_mail_next_user"
> #10 0x0000555555580833 in doveadm_mail_single_user 
> (ctx=ctx at entry=0x5555557f64c8, cctx=cctx at entry=0x7fffffffe2b0, 
> error_r=error_r at entry=0x7fffffffe240) at doveadm-mail.c:460
> ---Type <return> to continue, or q <return> to quit---
>         __FUNCTION__ = "doveadm_mail_single_user"
> #11 0x000055555558092a in doveadm_mail_cmd_exec 
> (ctx=ctx at entry=0x5555557f64c8, cctx=cctx at entry=0x7fffffffe2b0, 
> wildcard_user=wildcard_user at entry=0x0) at doveadm-mail.c:621
>         ret = <optimized out>
>         error = 0x5555557e7750 "+AF:S:u:"
> #12 0x0000555555581285 in doveadm_mail_cmd (argv=<optimized out>, 
> argc=6, cmd=0x5555557f6c90) at doveadm-mail.c:718
>         cctx = {cmd = 0x0, argc = 0, argv = 0x0, username = 
> 0x5555557ef7c3 "jc", cli = false, 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}
>         ctx = 0x5555557f64c8
>         getopt_args = 0x5555557e7750 "+AF:S:u:"
>         c = <optimized out>
>         wildcard_user = 0x0
> #13 doveadm_mail_try_run (cmd_name=cmd_name at entry=0x5555557ef631 
> "batch", argc=6, argv=0x5555557ef5e8) at doveadm-mail.c:791
>         cmd = 0x5555557f6c90
> #14 0x00005555555703fa in main (argc=6, argv=0x5555557ef5e8) at 
> doveadm.c:384
>         cctx = {cmd = 0x0, argc = 0, argv = 0x0, username = 
> 0x5555557ef7c3 "jc", 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 = 0x5555557ef631 "batch"
>         quick_init = false
>         c = <optimized out>
> (gdb) c
> Continuing.
>
> Program terminated with signal SIGABRT, Aborted.
> The program no longer exists.
> (gdb)
>
>
>
>
>
>
> Regards,
>



More information about the dovecot mailing list