Jakub Jankowski
2015-Dec-13 01:53 UTC
2.2.21: panic in stats-plugin.c: line 324 (stats_user_deinit): assertion failed: (stats_global_user == user)
Hi, I've just upgraded dovecot to 2.2.21 (from 2.2.18), and I'm getting a crash when doing dsync backup: $ dsync -v -u user at domain.com backup maildir:/backup/maildirs/domain.com/user/Maildir dsync(user at domain.com): Panic: file stats-plugin.c: line 324 (stats_user_deinit): assertion failed: (stats_global_user == user) dsync(user at domain.com): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(+0x7e4b4) [0x7f543d3c74b4] -> /usr/lib64/dovecot/libdovecot.so.0(+0x7e529) [0x7f543d3c7529] -> /usr/lib64/dovecot/libdovecot.so.0(i_fatal+0) [0x7f543d372300] -> /usr/lib64/dovecot/lib90_stats_plugin.so(+0x4116) [0x7f543c95a116] -> /usr/lib64/dovecot/libdovecot-storage.so.0(mail_user_unref+0x35) [0x7f543d68efd5] -> /usr/bin/dsync [shasta at toxcorp.com done]() [0x420f90] -> /usr/bin/dsync [user at domain.com done](doveadm_mail_try_run+0x28c) [0x421edc] -> /usr/bin/dsync [user at domain.com done](main+0x2ff) [0x413a2f] -> /lib64/libc.so.6(__libc_start_main+0xf0) [0x7f543cd80870] -> /usr/bin/dsync [user at domain.com done](_start+0x29) [0x413bb9] Aborted This gets logged to syslog when it happens: Dec 13 02:12:33 host dovecot: imap-login: Login: user=<user at domain.com>, method=PLAIN, rip=A.B.C.D, lip=A.B.C.D, mpid=1576, TLS Dec 13 02:13:09 host dovecot: stats: Error: Mail server input error: CONNECT: Duplicate session ID 4rqRBSXGbFbDBgAAOpfmEQ for user user at domain.com service doveadm It definitely wasn't happening on 2.2.18 (I skipped .19 and .20). Here's my configuration (with some things sanitized): $ dovecot -n # 2.2.21 (5345f22): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.9 (357ac0a0e68b+) # OS: Linux 4.3.2 x86_64 Slackware 14.2 auth_cache_negative_ttl = 1 mins auth_cache_size = 4 k auth_mechanisms = plain login auth_socket_path = /var/run/dovecot/auth-userdb auth_verbose = yes auth_verbose_passwords = sha1 default_vsz_limit = 512 M deliver_log_format = msgid=%m psize=%p vsize=%w: %$ first_valid_gid = 500 first_valid_uid = 500 hostname = host.domain.com last_valid_gid = 500 last_valid_uid = 500 listen = * login_greeting = IMAP server ready. login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c mail_location = mdbox:~/mdbox:ALT=/var/vmail/altmdbox/%Ld/%Ln/altmdbox mail_plugins = " stats" mailbox_list_index = 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 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 Spam { special_use = \Junk } mailbox Trash { special_use = \Trash } prefix separator = / type = private } passdb { args = scheme=CRYPT username_format=%Lu /etc/dovecot/users driver = passwd-file } plugin { mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size recipient_delimiter = + sieve = ~/.dovecot.sieve sieve_default = /var/vmail/_sieve/default.sieve sieve_dir = ~/sieve stats_refresh = 30 secs stats_track_cmds = yes } pop3_client_workarounds = outlook-no-nuls postmaster_address = postmaster at domain.com protocols = imap pop3 lmtp sieve quota_full_tempfail = yes service auth-worker { user = $default_internal_user } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } } service dict { unix_listener dict { group = vmail mode = 0660 user = vmail } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } service_count = 1 } service imap { process_limit = 128 } service lmtp { inet_listener lmtp { address = 127.0.0.1 port = 2424 } unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0660 user = postfix } unix_listener lmtp-vmail { group = vmail mode = 0660 user = vmail } } service managesieve-login { inet_listener sieve { port = 4190 } service_count = 1 vsz_limit = 64 M } service managesieve { process_limit = 32 } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } } service pop3 { process_limit = 64 } service stats { fifo_listener stats-mail { mode = 0600 user = vmail } } ssl_cert = </etc/ssl/certs/cert.pem ssl_key = </etc/ssl/private/key.pem stats_command_min_time = 1 days stats_domain_min_time = 1 days stats_ip_min_time = 1 days stats_memory_limit = 32 M stats_session_min_time = 1 days stats_user_min_time = 1 days userdb { args = uid=vmail gid=vmail home=/var/vmail/mdbox/%Ld/%Ln driver = static } verbose_proctitle = yes protocol lda { mail_plugins = " stats sieve" } protocol imap { mail_max_userip_connections = 20 mail_plugins = " stats imap_stats" } protocol lmtp { mail_plugins = " stats sieve" } $ Let me know if there's anything else that I can provide to help narrowing it down. Cheers, shasta -- Jakub Jankowski|shasta at toxcorp.com|http://toxcorp.com/ GPG: FCBF F03D 9ADB B768 8B92 BB52 0341 9037 A875 942D
Timo Sirainen
2015-Dec-13 10:40 UTC
2.2.21: panic in stats-plugin.c: line 324 (stats_user_deinit): assertion failed: (stats_global_user == user)
On 13 Dec 2015, at 03:53, Jakub Jankowski <shasta at toxcorp.com> wrote:> > Hi, > > I've just upgraded dovecot to 2.2.21 (from 2.2.18), and I'm getting a crash when doing dsync backup: > > $ dsync -v -u user at domain.com backup maildir:/backup/maildirs/domain.com/user/Maildir > dsync(user at domain.com): Panic: file stats-plugin.c: line 324 (stats_user_deinit): assertion failed: (stats_global_user == user)Fixed: https://github.com/dovecot/core/commit/3a719a01a1790df053854d5245ace5ab6d0c3d13 A workaround is to just disable stats plugin with dsync. It didn't work in earlier versions anyway. The crash only came because it now started working, except for this crash at deinit.