Panic: data stack: Out of memory when allocating bytes

Josef 'Jeff' Sipek jeff.sipek at dovecot.fi
Tue Jan 23 21:07:11 EET 2018


On Tue, Jan 23, 2018 at 14:03:27 -0500, Josef 'Jeff' Sipek wrote:
> On Tue, Jan 23, 2018 at 18:21:38 +0100, Thomas Robers wrote:
> > Hello,
> > 
> > I'm using Dovecot 2.3 and sometimes i get this:
> > 
> > --- snip ---
> > Jan 23 14:23:13 mail dovecot: imap(bob at tutech.de)<4880><PDqibHFjMvrAqG1n>:
> > Panic: data stack: Out of memory when allocating 134217768 bytes
> 
> Interesting... imap is trying to allocate 128MB and failing.  A couple of
> questions:
> 
> 0. Does this user have any unusually large emails?
> 1. Do you have any idea what the imap process was doing at the time of the
>    allocation failure?
> 2. You snipped all the important parts of the back trace. :)  It *starts* on
>    the line:
> 	#0  0x00007f73f1386495 in raise () from /lib64/libc.so.6

In case you haven't used gdb before...  after starting up gdb, run "bt full"
at the gdb prompt.  That'll print out a very detailed backtrace.  (You might
want to sanity check it to make sure there aren't any user passwords in it
before posting it here...)

Jeff.

>    Having the backtrace should help answer question number 1.
> 3. How big is this process when it dies?
> 4. Do you have any sort of ulimit/rlimit set on dovecot in whatever startup
>    script you use?
> 5. Do you use cgroups to limit memory usage?
> 6. Did you disable memory overcommit on the system?
> 
> Jeff.
> 
> > Jan 23 14:23:13 mail dovecot: imap(bob at tutech.de)<4880><PDqibHFjMvrAqG1n>:
> > Fatal: master: service(imap): child 4880 killed with signal 6 (core dumped)
> > --- snip ---
> > 
> > The gdb backtrace is:
> > 
> > --- snip ---
> > GNU gdb (GDB) Red Hat Enterprise Linux (7.2-92.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/libexec/dovecot/imap...(no debugging symbols
> > found)...done.
> > Attaching to program: /usr/libexec/dovecot/imap, process 4880
> > ptrace: Kein passender Prozess gefunden.
> > [New Thread 4880]
> > Reading symbols from /usr/lib64/dovecot/libdovecot-storage.so.0...(no
> > debugging symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/libdovecot-storage.so.0
> > Reading symbols from /usr/lib64/dovecot/libdovecot.so.0...(no debugging
> > symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/libdovecot.so.0
> > Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
> > Loaded symbols for /lib64/libc.so.6
> > Reading symbols from /lib64/librt.so.1...(no debugging symbols
> > found)...done.
> > Loaded symbols for /lib64/librt.so.1
> > Reading symbols from /lib64/libdl.so.2...(no debugging symbols
> > found)...done.
> > Loaded symbols for /lib64/libdl.so.2
> > Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols
> > found)...done.
> > Loaded symbols for /lib64/ld-linux-x86-64.so.2
> > Reading symbols from /lib64/libpthread.so.0...(no debugging symbols
> > found)...done.
> > [Thread debugging using libthread_db enabled]
> > Loaded symbols for /lib64/libpthread.so.0
> > Reading symbols from /usr/lib64/dovecot/lib01_acl_plugin.so...(no debugging
> > symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/lib01_acl_plugin.so
> > Reading symbols from /usr/lib64/dovecot/lib02_imap_acl_plugin.so...(no
> > debugging symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/lib02_imap_acl_plugin.so
> > Reading symbols from /usr/lib64/dovecot/lib15_notify_plugin.so...(no
> > debugging symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/lib15_notify_plugin.so
> > Reading symbols from /usr/lib64/dovecot/lib20_mail_log_plugin.so...(no
> > debugging symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/lib20_mail_log_plugin.so
> > Reading symbols from /usr/lib64/dovecot/lib20_zlib_plugin.so...(no debugging
> > symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/lib20_zlib_plugin.so
> > Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done.
> > Loaded symbols for /lib64/libz.so.1
> > Reading symbols from /lib64/libbz2.so.1...(no debugging symbols
> > found)...done.
> > Loaded symbols for /lib64/libbz2.so.1
> > Reading symbols from /usr/lib64/dovecot/lib30_imap_zlib_plugin.so...(no
> > debugging symbols found)...done.
> > Loaded symbols for /usr/lib64/dovecot/lib30_imap_zlib_plugin.so
> > Core was generated by `dovecot/imap'.
> > Program terminated with signal 6, Aborted.
> > #0  0x00007f73f1386495 in raise () from /lib64/libc.so.6
> > --- snip ---
> > 
> > I searched for that error message but only found some entries regarding
> > older dovecot versions and setting "mail_process_size" but i couldn't
> > find anything regarding Dovecot Version 2.3. Maybe it's something that is
> > fixed already but if so i can't find it. Or is this a configuration issue or
> > a bug?
> > 
> > Here my Dovecot configuration:
> > 
> > --- snip ---
> > # 2.3.0 (c8b89eb): /etc/dovecot/dovecot.conf
> > # Pigeonhole version 0.5.0.1 (d33dca20)
> > # OS: Linux 2.6.32-696.3.1.el6.x86_64 x86_64 CentOS release 6.9 (Final) ext4
> > auth_debug = yes
> > auth_debug_passwords = yes
> > auth_master_user_separator = *
> > auth_mechanisms = plain login
> > auth_verbose = yes
> > disable_plaintext_auth = no
> > doveadm_password =  # hidden, use -P to show it
> > doveadm_port = 12345
> > imap_max_line_length = 2 M
> > mail_debug = yes
> > mail_location = maildir:/export/home/imap/%Lu/Maildir
> > mail_plugins = acl zlib mail_log notify
> > mailbox_idle_check_interval = 10 secs
> > 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
> > namespace {
> >   hidden = no
> >   ignore_on_failure = no
> >   inbox = no
> >   list = children
> >   location = maildir:%%h/Maildir:INDEXPVT=%h/shared/%%u
> >   prefix = shared/%%u/
> >   separator = /
> >   subscriptions = yes
> >   type = shared
> > }
> > namespace inbox {
> >   hidden = no
> >   inbox = yes
> >   list = 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 = /
> >   type = private
> > }
> > passdb {
> >   args = /etc/dovecot/master-users
> >   driver = passwd-file
> >   master = yes
> > }
> > passdb {
> >   args = /etc/dovecot/dovecot-ldap.conf.ext
> >   driver = ldap
> > }
> > plugin {
> >   acl = vfile:/etc/dovecot/global-acls:cache_secs=300
> >   acl_shared_dict = file:/export/home/shared-db/shared-mailboxes
> >   mail_log_events = append delete undelete expunge copy mailbox_delete
> > mailbox_rename flag_change
> >   mail_log_fields = uid box msgid size from flags
> >   mail_replica = tcp:mail2.tutech.de
> >   sieve = ~/.dovecot.sieve
> >   sieve_dir = ~/sieve
> >   sieve_global = /var/lib/dovecot/sieve/global/
> >   sieve_user_log = ~/.dovecot.sieve.log
> >   zlib_save = gz
> >   zlib_save_level = 6
> > }
> > protocols = imap pop3 lmtp sieve sieve
> > service aggregator {
> >   fifo_listener replication-notify-fifo {
> >     mode = 0666
> >     user = vmail
> >   }
> >   unix_listener replication-notify {
> >     mode = 0666
> >     user = vmail
> >   }
> > }
> > service auth {
> >   unix_listener /var/spool/postfix/private/auth {
> >     mode = 0666
> >   }
> >   unix_listener auth-userdb {
> >     group = vmail
> >     mode = 0660
> >     user = vmail
> >   }
> > }
> > service config {
> >   unix_listener config {
> >     user = vmail
> >   }
> > }
> > service doveadm {
> >   inet_listener {
> >     port = 12345
> >   }
> >   user = vmail
> > }
> > service imap-login {
> >   inet_listener imaps {
> >     port = 993
> >     ssl = yes
> >   }
> >   process_limit = 500
> >   process_min_avail = 20
> > }
> > service imap {
> >   executable = imap
> > }
> > service lmtp {
> >   inet_listener lmtp {
> >     address = 127.0.0.1
> >     port = 24
> >   }
> > }
> > service managesieve-login {
> >   inet_listener sieve {
> >     port = 4190
> >   }
> >   inet_listener sieve_deprecated {
> >     port = 2000
> >   }
> > }
> > service pop3-login {
> >   inet_listener pop3s {
> >     port = 995
> >     ssl = yes
> >   }
> > }
> > service pop3 {
> >   executable = pop3
> > }
> > service replicator {
> >   unix_listener replicator-doveadm {
> >     mode = 0666
> >   }
> > }
> > ssl = required
> > ssl_cert = </etc/pki/dovecot/certs/mail.tutech.de.crt_chain
> > ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!EXPORT
> > ssl_dh =  # hidden, use -P to show it
> > ssl_key =  # hidden, use -P to show it
> > syslog_facility = local6
> > userdb {
> >   args = /etc/dovecot/dovecot-ldap-userdb.conf.ext
> >   driver = ldap
> > }
> > protocol lmtp {
> >   mail_plugins = acl zlib mail_log notify sieve
> > }
> > protocol imap {
> >   mail_max_userip_connections = 100
> >   mail_plugins = acl zlib mail_log notify imap_zlib imap_acl
> >   rawlog_dir = /tmp/rawlog/%u
> > }
> > --- snip ---
> > 
> > 
> > Thanks for the help!
> > 
> > Kind regards
> > Thomas
> > 
> 
> -- 
> Bad pun of the week: The formula 1 control computer suffered from a race
> condition

-- 
C is quirky, flawed, and an enormous success.
		- Dennis M. Ritchie.


More information about the dovecot mailing list