[Dovecot] crash/mem violation in auth_worker + 50G logs in 2.1.7

Mrten mrten+dovecot at ii.nl
Sat Jun 8 14:27:34 EEST 2013


Hi,

This morning I discovered what seemed to be a deliberate crash in
auth_worker:

Jun  7 23:02:09 localhost dovecot: auth-worker: Error: #007Can't read
dir of '/etc/mysql/conf.d/' (Errcode: 2)
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: Fatal error in
defaults handling. Program aborted
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: *** glibc
detected *** dovecot/auth worker: waiting for connection: free():
invalid pointer: 0x00007fffa0863160 ***
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: =======
Backtrace: =========
Jun  7 23:02:09 localhost dovecot: auth-worker: Error:
/lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7f22d42f9b96]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error:
/usr/lib/libmysqlclient.so.18(free_root+0x90)[0x7f22d37988c0]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error:
/usr/lib/libmysqlclient.so.18(free_defaults+0x4b)[0x7f22d3796e6b]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error:
/usr/lib/libmysqlclient.so.18(mysql_read_default_options+0x13c)[0x7f22d377d00c]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error:
/usr/lib/libmysqlclient.so.18(mysql_real_connect+0x8e)[0x7f22d377eb4e]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error:
/usr/lib/dovecot/modules/auth/libdriver_mysql.so(+0x1fc6)[0x7f22d3c52fc6]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: dovecot/auth
worker: waiting for connection(+0x2be1d)[0x7f22d515be1d]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: dovecot/auth
worker: waiting for connection(db_sql_connect+0xd)[0x7f22d514aedd]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: dovecot/auth
worker: waiting for connection(+0x23d70)[0x7f22d5153d70]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: dovecot/auth
worker: waiting for connection(passdb_init+0x2a)[0x7f22d515158a]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: dovecot/auth
worker: waiting for connection(auths_init+0x59)[0x7f22d513dfe9]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: dovecot/auth
worker: waiting for connection(main+0x345)[0x7f22d513d5f5]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error:
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7f22d429c76d]
Jun  7 23:02:09 localhost dovecot: auth-worker: Error: dovecot/auth
worker: waiting for connection(+0xd7d9)[0x7f22d513d7d9]

There follows a memory map but I snipped that.

This repeated until I killed dovecot (12 hours later), by then 54GB of
logs had accumulated. Besides leaving me impressed with the logserver
:), I was wondering if this is a known problem.



I don't know what triggered this at 23:02 (shown above is the first set
of problem logentries). Can't really have been an upgrade, since I
backported the raring dovecot Ubuntu package for my precise server, no
automated upgrades there.

I did go look for the /etc/mysql/conf.d directory mentioned, it wasn't
there, but there was a /etc/mysql/my.cnf trying to !includedir it. Since
there is no mysql on the server besides libmysqlclient I removed the
directory and haven't seen the problem return yet. Sounds like the
reason for happening, however, the memory error after that probably
warrants research?

If it is in libmysqlclient, that's another non-default snag because
that's the lib I get from Percona, not the Ubuntu default one.

Shouldn't dovecot recognize that the auth worker is crashing?


One more thing, this is (one line from many) from audit.log (I have
auditd logging audit records)

type=ANOM_ABEND msg=audit(1370682566.377:3499876): auid=4294967295
uid=108 gid=115 ses=4294967295 pid=23187 comm="auth" reason="memory
violation" sig=6

108 is the dovecot user, so it probably is related.

I realise I'm way off defaults here but I wanted to report anyway.


(dovecot -n attached)

thanks for any insight,
Maarten.
-------------- next part --------------
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-43-virtual x86_64 Ubuntu 12.04.2 LTS
auth_cache_negative_ttl = 0
auth_cache_size = 10 M
auth_cache_ttl = 5 mins
auth_failure_delay = 3 secs
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-@
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_save_crlf = yes
maildir_stat_dirs = yes
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 =
}
passdb {
  args = /etc/dovecot/extra/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  fts = squat
  quota = maildir:User quota
  quota_rule = *:bytes=10G
  quota_rule2 = Trash:bytes=+100M
  trash = /etc/dovecot/conf.d/trash
  var_domainpart = %d
  var_remote = %r
  var_service = %Ls
  var_user = %u
  var_userpart = %n
}
protocols = imap pop3
service auth-worker {
  user = $default_internal_user
}
service auth {
  unix_listener /var/spool/exim4/private/auth {
    mode = 0660
  }
  unix_listener auth-userdb {
    group = root
    mode = 0600
    user = root
  }
  user = $default_internal_user
}
service imap-login {
  chroot = login
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    address = *
  }
  process_limit = 128
  process_min_avail = 3
  service_count = 1
  user = $default_internal_user
  vsz_limit = 64 M
}
service imap {
  drop_priv_before_exec = yes
  executable = imap imap_postlogin
  process_limit = 256
  vsz_limit = 512 M
}
service imap_postlogin {
  executable = script-login /etc/dovecot/imap_helper.sh
}
service pop3-login {
  chroot = login
  process_limit = 128
  process_min_avail = 3
  service_count = 1
  user = $default_internal_user
}
service pop3 {
  drop_priv_before_exec = yes
  executable = pop3 pop3_postlogin
  process_limit = 256
  vsz_limit = 512 M
}
service pop3_postlogin {
  executable = script-login /etc/dovecot/pop3_helper.sh
}
ssl_cert = </etc/dovecot/ssl/mail.ii.nl/certificate
ssl_cipher_list = TLSv1:@STRENGTH:!RC4:!NULL
ssl_key = </etc/dovecot/ssl/mail.ii.nl/key
userdb {
  driver = prefetch
}
verbose_proctitle = yes
protocol imap {
  imap_client_workarounds = tb-extra-mailbox-sep tb-lsub-flags delay-newmail
  imap_max_line_length = 64 k
  mail_max_userip_connections = 20
  mail_plugins = " quota imap_quota fts fts_squat"
}
protocol pop3 {
  mail_max_userip_connections = 5
  mail_plugins = " quota"
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
  pop3_enable_last = yes
  pop3_logout_format = io=%i/%o, top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
  pop3_uidl_format = %08Xu%08Xv
}


More information about the dovecot mailing list