Doveadm error during store - segfault clucene

Stephan Bosch stephan at rename-it.nl
Thu Oct 3 23:36:13 EEST 2019



On 02/10/2019 10:12, Domenico Pastore via dovecot wrote:
>
>
> Hi,
> during the store of the messages, I find the following doveadm errors:
>
> 2019-10-02 09:22:19 auth: Debug: 
> ldap(test.pop at test.xxx.it,10.11.47.60): result: 
> mailMessageStore=1/1/2/0/8/7/2/1120872_91093 mailQuota=52428800; 
> mailQuota,mailMessageStore unused
> 2019-10-02 09:22:19 auth: Debug: 
> ldap(test.pop at test.xxx.it,10.11.47.60): Finished userdb lookup
> 2019-10-02 09:22:19 auth: Debug: userdb out: USER    1 
> test.pop at test.xxx.it 
> home=/store/mailbox/mailbox_test/1/1/2/0/8/7/2/1120872_91093 
> quota_rule=*:bytes=52428800    mail_plugins+=
> *2019-10-02 09:22:19 
> doveadm(test.pop at test.xxx.it)<180667><MO3BGytQlF27wQIAxhuf8Q>: Fatal: 
> master: service(doveadm): child 180667 killed with signal 11 (core 
> dumped)*
> 2019-10-02 09:22:19 auth: Debug: master in: USER    1 
> test.pop at test.xxx.it    service=doveadm lip=192.160.10.100    
> lport=924    rip=10.11.47.60 rport=56515
> 2019-10-02 09:22:19 auth: Debug: 
> ldap(test.pop at test.xxx.it,10.11.47.60): Performing userdb lookup
>
> This problem occurs only with the quota plugin enabled.
>
> Can you help me?
>

The GDB trace tells me this is most likely a Lucene bug. There is very 
little Dovecot can mess up at library deinit like that.

Regards,

Stephan.

> Best regards
>
> Domenico
>
> -----------------------------------------------------
>
> (gdb)
> #0  clear (this=0x0) at 
> /usr/src/debug/clucene-core-2.3.3.4/src/core/CLucene/util/VoidMap.h:123
> #1  lucene::search::FieldSortedHitQueue::_shutdown () at 
> /usr/src/debug/clucene-core-2.3.3.4/src/core/CLucene/search/FieldSortedHitQueue.cpp:60
> #2  0x00007f4b37a62e96 in _lucene_shutdown () at 
> /usr/src/debug/clucene-core-2.3.3.4/src/core/CLucene/StdHeader.cpp:33
> #3  0x00007f4b3b2f2fbb in module_dir_deinit (modules=<optimized out>) 
> at module-dir.c:578
> #4  0x00007f4b3b2f3001 in module_dir_unload 
> (modules=modules at entry=0x7f4b3b8e1380 <mail_storage_service_modules>) 
> at module-dir.c:590
> #5  0x00007f4b3b5dd264 in mail_storage_service_deinit 
> (_ctx=_ctx at entry=0x55ea409b7838) at mail-storage-service.c:1730
> #6  0x000055ea3f4a3d35 in doveadm_mail_cmd_exec 
> (ctx=ctx at entry=0x55ea409b77f8, wildcard_user=wildcard_user at entry=0x0) 
> at doveadm-mail.c:673
> #7  0x000055ea3f4a4bbd in doveadm_cmd_ver2_to_mail_cmd_wrapper 
> (cctx=<optimized out>) at doveadm-mail.c:1144
> #8  0x000055ea3f4b5c98 in doveadm_cmd_run_ver2 (argc=argc at entry=1, 
> argv=argv at entry=0x55ea40997150, cctx=cctx at entry=0x7fff9a1cb990) at 
> doveadm-cmd.c:574
> #9  0x000055ea3f4ba020 in doveadm_cmd_server_run_ver2 
> (cctx=0x7fff9a1cb990, argv=0x55ea40997150, argc=1, 
> conn=0x55ea409ebbd8) at client-connection-tcp.c:178
> #10 doveadm_cmd_handle (cctx=0x7fff9a1cb990, argv=0x55ea40997150, 
> argc=1, cmd_name=<optimized out>, conn=0x55ea409ebbd8) at 
> client-connection-tcp.c:342
> #11 client_handle_command (args=<optimized out>, conn=0x55ea409ebbd8) 
> at client-connection-tcp.c:415
> #12 client_connection_tcp_input (conn=0x55ea409ebbd8) at 
> client-connection-tcp.c:561
> #13 0x00007f4b3b2e855f in io_loop_call_io (io=0x55ea409c5b10) at 
> ioloop.c:704
> #14 0x00007f4b3b2e9fa3 in io_loop_handler_run_internal 
> (ioloop=ioloop at entry=0x55ea4099fcb0) at ioloop-epoll.c:221
> #15 0x00007f4b3b2e8666 in io_loop_handler_run 
> (ioloop=ioloop at entry=0x55ea4099fcb0) at ioloop.c:756
> #16 0x00007f4b3b2e8888 in io_loop_run (ioloop=0x55ea4099fcb0) at 
> ioloop.c:729
> #17 0x00007f4b3b25b2d3 in master_service_run (service=0x55ea4099fb40, 
> callback=callback at entry=0x55ea3f4bd260 <client_connected>) at 
> master-service.c:781
> #18 0x000055ea3f493421 in main (argc=1, argv=0x55ea4099f890) at main.c:151
>
> (gdb) bt full
> #0  clear (this=0x0) at 
> /usr/src/debug/clucene-core-2.3.3.4/src/core/CLucene/util/VoidMap.h:123
> No locals.
> #1  lucene::search::FieldSortedHitQueue::_shutdown () at 
> /usr/src/debug/clucene-core-2.3.3.4/src/core/CLucene/search/FieldSortedHitQueue.cpp:60
> No locals.
> #2  0x00007f4b37a62e96 in _lucene_shutdown () at 
> /usr/src/debug/clucene-core-2.3.3.4/src/core/CLucene/StdHeader.cpp:33
> No locals.
> #3  0x00007f4b3b2f2fbb in module_dir_deinit (modules=<optimized out>) 
> at module-dir.c:578
>         _data_stack_cur_id = 4
>         module = 0x55ea40a048b0
>         rev = 0x55ea4099ac18
>         i = <optimized out>
>         count = 6
> #4  0x00007f4b3b2f3001 in module_dir_unload 
> (modules=modules at entry=0x7f4b3b8e1380 <mail_storage_service_modules>) 
> at module-dir.c:590
>         module = <optimized out>
>         next = <optimized out>
> #5  0x00007f4b3b5dd264 in mail_storage_service_deinit 
> (_ctx=_ctx at entry=0x55ea409b7838) at mail-storage-service.c:1730
>         ctx = 0x55ea409f0bf8
> #6  0x000055ea3f4a3d35 in doveadm_mail_cmd_exec 
> (ctx=ctx at entry=0x55ea409b77f8, wildcard_user=wildcard_user at entry=0x0) 
> at doveadm-mail.c:673
>         cctx = <optimized out>
>         cli = <optimized out>
>         ret = <optimized out>
>         error = 0x7f4b3b22d2f7 <__x86_return_thunk+5> 
> "\363\220\017\256\350\353\371H\215d$\b\303\350\a"
> #7  0x000055ea3f4a4bbd in doveadm_cmd_ver2_to_mail_cmd_wrapper 
> (cctx=<optimized out>) at doveadm-mail.c:1144
>         mctx = 0x55ea409b77f8
>         wildcard_user = <optimized out>
>         fieldstr = 0x55ea40997310 "͒\t7K\177"
>         pargv = {arr = {buffer = 0x55ea409b7a28, element_size = 8}, v 
> = 0x55ea409b7a28, v_modifiable = 0x55ea409b7a28}
>         full_args = {arr = {buffer = <optimized out>, element_size = 
> 8}, v = <optimized out>, v_modifiable = <optimized out>}
>         i = <optimized out>
>         cli = <optimized out>
>         tcp_server = <optimized out>
>         mail_cmd = {alloc = 0x7f4b37098d00 <cmd_quota_get_alloc>, name 
> = 0x7f4b370992b6 "quota get", usage_args = 0x7f4b37099291 ""}
>         dashdash = 0x55ea3f4e07ca "--"
>         args_pos = 1
> #8  0x000055ea3f4b5c98 in doveadm_cmd_run_ver2 (argc=argc at entry=1, 
> argv=argv at entry=0x55ea40997150, cctx=cctx at entry=0x7fff9a1cb990) at 
> doveadm-cmd.c:574
>         param = <optimized out>
>         pargv = {arr = {buffer = 0x55ea40997410, element_size = 104}, 
> v = 0x55ea40997410, v_modifiable = 0x55ea40997410}
>         opts = {arr = {buffer = <optimized out>, element_size = 32}, v 
> = <optimized out>, v_modifiable = <optimized out>}
>         pargc = 4
>         c = -1
>         li = 102607314
>         pool = 0x55ea40997240
>         optbuf = 0x55ea40997258
>         __func__ = "doveadm_cmd_run_ver2"
> #9  0x000055ea3f4ba020 in doveadm_cmd_server_run_ver2 
> (cctx=0x7fff9a1cb990, argv=0x55ea40997150, argc=1, 
> conn=0x55ea409ebbd8) at client-connection-tcp.c:178
> No locals.
> #10 doveadm_cmd_handle (cctx=0x7fff9a1cb990, argv=0x55ea40997150, 
> argc=1, cmd_name=<optimized out>, conn=0x55ea409ebbd8) at 
> client-connection-tcp.c:342
>         mail_cmd = <optimized out>
>         mctx = <optimized out>
>         cmd_ver2 = <optimized out>
>         prev_ioloop = 0x55ea4099fcb0
>         cmd = 0x0
> #11 client_handle_command (args=<optimized out>, conn=0x55ea409ebbd8) 
> at client-connection-tcp.c:415
>         cctx = {cmd = 0x55ea409b53d8, argc = 4, argv = 0x55ea40997448, 
> username = 0x55ea40997119 "test.pop at test.xxx.it", local_ip = {family = 
> 2, u = {ip6 = {__in6_u = {
>                   __u6_addr8 = "\300\240\nd", '\000' <repeats 11 
> times>, __u6_addr16 = {41152, 25610, 0, 0, 0, 0, 0, 0}, __u6_addr32 = 
> {1678418112, 0, 0, 0}}}, ip4 = {
>                 s_addr = 1678418112}}}, remote_ip = {family = 2, u = 
> {ip6 = {__in6_u = {__u6_addr8 = "\n\v/<", '\000' <repeats 11 times>, 
> __u6_addr16 = {2826, 15407, 0, 0, 0, 0, 0,
>                     0}, __u6_addr32 = {1009715978, 0, 0, 0}}}, ip4 = 
> {s_addr = 1009715978}}}, local_port = 924, remote_port = 54042, 
> conn_type = DOVEADM_CONNECTION_TYPE_TCP,
>           input = 0x55ea409b0db0, output = 0x55ea409b6cf0}
>         flags = <optimized out>
>         cmd_name = <optimized out>
>         argc = <optimized out>
> ---Type <return> to continue, or q <return> to quit---
> #12 client_connection_tcp_input (conn=0x55ea409ebbd8) at 
> client-connection-tcp.c:561
>         args = <optimized out>
>         _data_stack_cur_id = 3
>         line = <optimized out>
>         ok = true
>         minor = 0
> #13 0x00007f4b3b2e855f in io_loop_call_io (io=0x55ea409c5b10) at 
> ioloop.c:704
>         ioloop = 0x55ea4099fcb0
>         t_id = 2
>         __func__ = "io_loop_call_io"
> #14 0x00007f4b3b2e9fa3 in io_loop_handler_run_internal 
> (ioloop=ioloop at entry=0x55ea4099fcb0) at ioloop-epoll.c:221
>         ctx = 0x55ea409a57a0
>         events = <optimized out>
>         list = 0x55ea409e9e80
>         io = <optimized out>
>         tv = {tv_sec = 2147483, tv_usec = 0}
>         events_count = <optimized out>
>         msecs = <optimized out>
>         ret = 1
>         i = 0
>         call = <optimized out>
>         __func__ = "io_loop_handler_run_internal"
> #15 0x00007f4b3b2e8666 in io_loop_handler_run 
> (ioloop=ioloop at entry=0x55ea4099fcb0) at ioloop.c:756
>         __func__ = "io_loop_handler_run"
> #16 0x00007f4b3b2e8888 in io_loop_run (ioloop=0x55ea4099fcb0) at 
> ioloop.c:729
>         __func__ = "io_loop_run"
> #17 0x00007f4b3b25b2d3 in master_service_run (service=0x55ea4099fb40, 
> callback=callback at entry=0x55ea3f4bd260 <client_connected>) at 
> master-service.c:781
> No locals.
> #18 0x000055ea3f493421 in main (argc=1, argv=0x55ea4099f890) at main.c:151
>         set_roots = {0x7f4b3b57cd00 
> <master_service_ssl_setting_parser_info>, 0x55ea3f7026a0 
> <doveadm_setting_parser_info>, 0x0}
>         input = {roots = 0x7fff9a1cbb70, config_path = 0x0, 
> preserve_environment = false, preserve_user = false, preserve_home = 
> false, never_exec = false, use_sysexits = false,
>           parse_full_config = false, module = 0x55ea3f4dcd3a 
> "doveadm", service = 0x55ea3f4dcd3a "doveadm", username = 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_name = 0x0}
>         output = {specific_services = 0x0, service_uses_local = false, 
> service_uses_remote = false, used_local = false, used_remote = false, 
> permission_denied = false}
>         error = 0x7f4b3aca3ca7 "__vdso_getcpu"
>         c = <optimized out>
> (gdb)
>
>
> #  2.3.7.2 (3c910f64b): /new_config/dovecot/dovecot_test/dovecot.conf
> # Pigeonhole version 0.5.7.2 (7372921a)
> # OS: Linux 3.10.0-957.21.3.el7.x86_64 x86_64 CentOS Linux release 
> 7.6.1810 (Core)
> # Hostname: pop10
> auth_debug = yes
> auth_master_user_separator = *
> auth_username_format =
> base_dir = /data/dovecot/var/run/dovecot_test
> default_vsz_limit = 768 M
> dict {
>   sqlquota = mysql:/new_config/dovecot/common/dovecot-dict-sql.conf.ext
> }
> disable_plaintext_auth = no
> doveadm_password = # hidden, use -P to show it
> first_valid_gid = 101
> first_valid_uid = 102
> imap_id_send =
> import_environment = TZ
> info_log_path = /LOGS/dovecot/dovecot_test.log
> instance_name = dovecot_test
> listen = dovecot_test
> log_path = /LOGS/dovecot/dovecot_test.log
> log_timestamp = "%Y-%m-%d %H:%M:%S "
> mail_gid = 101
> mail_location = maildir:%h/Maildir
> mail_max_userip_connections = 50
> mail_plugins = quota mail_log notify virtual fts fts_lucene
> mail_uid = 102
> maildir_broken_filename_sizes = yes
> managesieve_notify_capability = mailto
> managesieve_sieve_capability = fileinto reject envelope 
> encoded-character vacation subaddress comparator-i;ascii-numeric 
> relational regex imap4flags copy include variables body enotify 
> environment mailbox date index ihave duplicate mime foreverypart 
> extracttext vnd.dovecot.debug
> mbox_write_locks = fcntl
> namespace {
>   hidden = yes
>   list = no
>   location = 
> virtual:/new_config/dovecot/common/virtual:INDEX=~/virtual:SUBSCRIPTIONS=.subscriptions/%u
>   prefix = Messaggi in arrivo.
>   separator = .
>   subscriptions = no
> }
> 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 = INBOX.
>   separator = .
>   subscriptions = yes
>   type = private
> }
> passdb {
>   args = /new_config/dovecot/common/passwd.masterusers
>   driver = passwd-file
>   master = yes
> }
> passdb {
>   args = /new_config/dovecot/dovecot_test/dovecot-ldap.conf
>   driver = ldap
> }
> passdb {
>   args = /new_config/dovecot/common/dovecot-ldap-multiuser.conf
>   driver = ldap
>   master = yes
> }
> passdb {
>   args = /new_config/dovecot/common/dovecot-ldap-webmaillight.conf.ext
>   driver = ldap
>   master = yes
> }
> plugin {
>   fts = lucene
>   fts_autoindex = yes
>   fts_autoindex_max_recent = 1000
>   fts_lucene =
>   mail_log_events = delete undelete expunge copy mailbox_delete 
> mailbox_rename flag_change save mailbox_create
>   mail_log_fields = uid box msgid size flags
>   quota = dict:User quota::proxy::sqlquota
>   quota_rule2 = INBOX.Trash:storage=+100M
>   sieve_default = /new_config/dovecot/common/default.sieve
>   sieve_extensions = +vnd.dovecot.debug
> }
> postmaster_address = posta at fooo.it
> service anvil {
>   client_limit = 8000
> }
> service auth {
>   client_limit = 12000
>   unix_listener auth-userdb {
>     mode = 0600
>   }
> }
> service dict {
>   process_limit = 7500
>   process_min_avail = 10
>   unix_listener dict {
>     mode = 0600
>     user = dovecot
>   }
> }
> service doveadm {
>   chroot =
>   client_limit = 1
>   drop_priv_before_exec = no
>   executable = doveadm-server
>   extra_groups =
>   group =
>   idle_kill = 0
>   inet_listener {
>     port = 924
>   }
>   privileged_group =
>   process_limit = 0
>   process_min_avail = 10
>   protocol =
>   service_count = 100
>   type =
>   unix_listener doveadm-server {
>     group =
>     mode = 0600
>     user =
>   }
>   user =
> }
> service imap-login {
>   inet_listener imap {
>     port = 143
>   }
>   inet_listener imaps {
>     port = 993
>     ssl = yes
>   }
>   process_limit = 5000
>   process_min_avail = 10
> }
> service imap {
>   drop_priv_before_exec = yes
>   process_limit = 5000
>   process_min_avail = 10
> }
> service lmtp {
>   inet_listener lmtp {
>     port = 24
>   }
>   process_limit = 2500
>   process_min_avail = 10
> }
> service managesieve-login {
>   inet_listener sieve {
>     port = 4190
>   }
>   process_min_avail = 0
>   service_count = 1
>   vsz_limit = 64 M
> }
> service managesieve {
>   drop_priv_before_exec = yes
>   process_limit = 1024
> }
> service pop3-login {
>   inet_listener pop3 {
>     port = 110
>   }
>   inet_listener pop3s {
>     port = 995
>     ssl = yes
>   }
>   process_limit = 1000
>   process_min_avail = 5
> }
> service pop3 {
>   drop_priv_before_exec = yes
>   process_limit = 1000
>   process_min_avail = 5
> }
> ssl_cert = </new_config/dovecot/common/certs/dovecot.pem
> ssl_key = # hidden, use -P to show it
> userdb {
>   args = /new_config/dovecot/dovecot_test/dovecot-ldap.conf
>   driver = ldap
> }
> protocol lmtp {
>   mail_plugins = quota mail_log notify sieve virtual
> }
> protocol lda {
>   mail_plugins = quota mail_log notify sieve virtual
> }
> protocol imap {
>   mail_plugins = quota imap_quota mail_log notify virtual
> }
> protocol pop3 {
>   mail_plugins = quota mail_log notify virtual
>   pop3_uidl_format = UID%u-%v
> }
>
>



More information about the dovecot mailing list