Replicator: Panic: data stack: Out of memory

Ivan Jurišić ivan at jurisic.org
Fri Jun 3 09:13:39 UTC 2022


Reproduce of error (Replicator: Panic: data stack: Out of memory):
==================================================================

When replay on any mail I will got OOM.

I try add in service replicate vsz_limit = 0 but that not help (after 
proces dovecot/replicator eat all ram I got OOM)

Log error:
==========

Jun 03 09:38:59 Warning: 
imap(ivan at myserv.local)<2533034><h7EQN4bgaJ4FvZdE>: 
replication(ivan at myserv.local): Sync failure: Timeout in 2 secs
Jun 03 09:39:03 Panic: replicator: data stack: Out of memory when 
allocating 4294967336 bytes
Jun 03 09:39:03 Error: replicator: Raw backtrace: 
/usr/lib/dovecot/libdovecot.so.0(backtrace_append+0x42) [0x7feef08f0582] 
-> /usr/lib/dovecot/libdovecot.so.0(backtrace_get+0x1e) [0x7feef08f069e] 
-> /usr/lib/dovecot/libdovecot.so.0(+0x1022fb) [0x7feef08fd2fb] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x102391) [0x7feef08fd391] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x55589) [0x7feef0850589] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x54d52) [0x7feef084fd52] -> 
/usr/lib/dovecot/libdovecot.so.0(+0xfb808) [0x7feef08f6808] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x122938) [0x7feef091d938] -> 
/usr/lib/dovecot/libdovecot.so.0(+0xf76bf) [0x7feef08f26bf] -> 
/usr/lib/dovecot/libdovecot.so.0(+0xf777e) [0x7feef08f277e] -> 
/usr/lib/dovecot/libdovecot.so.0(buffer_append+0x61) [0x7feef08f2a21] -> 
dovecot/replicator(replicator_queue_push+0x15a) [0x55953ece9b7a] -> 
dovecot/replicator(+0x62b6) [0x55953ece92b6] -> 
dovecot/replicator(+0x594e) [0x55953ece894e] -> 
dovecot/replicator(+0x5b2c) [0x55953ece8b2c] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x69) [0x7feef0913529] 
-> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0x132) 
[0x7feef0914c12] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x50) 
[0x7feef09135d0] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x40) 
[0x7feef0913790] -> 
/usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) 
[0x7feef0886353] -> dovecot/replicator(main+0x18d) [0x55953ece7cbd] -> 
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xea) [0x7feef0651d0a] 
-> dovecot/replicator(_start+0x2a) [0x55953ece7d7a]
Jun 03 09:39:03 Fatal: replicator: master: service(replicator): child 
2532886 killed with signal 6 (core dumps disabled - 
https://dovecot.org/bugreport.html#coredumps)

My configuration:
==========

# 2.3.19 (b3ad6004dc): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.19 (4eae2f79)
# OS: Linux 5.10.0-13-amd64 x86_64 Debian 11.3 ext4
# Hostname: mail.myserv.local
auth_mechanisms = plain login
auth_verbose = yes
debug_log_path = /var/log/dovecot.debug
default_client_limit = 5000
default_process_limit = 1000
default_vsz_limit = 2 G
deliver_log_format = msgid=%m, subject=%s, from=%f, size=%p(%w), %$
dict {
   quota = pgsql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
doveadm_password = # hidden, use -P to show it
hostname = myserv.local
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
listen = *
log_path = /var/log/dovecot.log
mail_home = /var/mail/vhosts/%d/mail/%n
mail_location = 
maildir:/var/mail/vhosts/%d/mail/%n:INDEX=/var/mail/vhosts/%d/indexes/%n
mail_plugins = " quota fts fts_solr notify replication"
mail_privileged_group = vmail
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 imapsieve vnd.dovecot.imapsieve
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 {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
plugin {
   autocreate = Sent
   autocreate2 = Drafts
   autocreate3 = Junk
   autocreate4 = Trash
   autosubscribe = Sent
   autosubscribe2 = Drafts
   autosubscribe3 = Junk
   autosubscribe4 = Trash
   expire = Trash
   expire2 = Trash/*
   expire3 = Spam
   fts = solr
   fts_autoindex = yes
   fts_solr = url=http://localhost:8983/solr/dovecot/
   imapsieve_mailbox1_before = file:/etc/dovecot/sieve/report-spam.sieve
   imapsieve_mailbox1_causes = COPY
   imapsieve_mailbox1_name = Junk
   imapsieve_mailbox2_before = file:/etc/dovecot/sieve/report-ham.sieve
   imapsieve_mailbox2_causes = COPY
   imapsieve_mailbox2_from = Junk
   imapsieve_mailbox2_name = *
   mail_replica = tcp:imap.myserv2.local:12345
   quota = dict:Mailbox::proxy::quota
   quota_rule = *:storage=1G
   quota_warning = storage=95%% quota-warning 95 %u
   quota_warning2 = storage=80%% quota-warning 80 %u
   replication_sync_timeout = 2
   sieve = 
file:/var/mail/vhosts/%d/sieve/%n;active=/var/mail/vhosts/%d/sieve/%n/.dovecot.sieve
   sieve_after = /etc/dovecot/sieve/after.d/
   sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
   sieve_max_actions = 32
   sieve_max_redirects = 4
   sieve_max_script_size = 1M
   sieve_pipe_bin_dir = /etc/dovecot/sieve
   sieve_plugins = sieve_imapsieve sieve_extprograms
   sieve_quota_max_scripts = 50
}
postmaster_address = postmaster@%d
protocols = " imap lmtp sieve pop3"
service aggregator {
   fifo_listener replication-notify-fifo {
     user = vmail
   }
   unix_listener replication-notify {
     user = vmail
   }
}
service auth-worker {
   user = vmail
}
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0666
     user = postfix
   }
}
service dict {
   unix_listener dict {
     user = vmail
   }
}
service doveadm {
   inet_listener {
     port = 12345
     ssl = no
   }
}
service imap-login {
   process_min_avail = 4
   service_count = 1
}
service lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0600
     user = postfix
   }
}
service quota-warning {
   executable = script /var/lib/dovecot/quota-warning.sh
   unix_listener quota-warning {
     user = vmail
   }
   user = root
}
service replicator {
   process_min_avail = 1
   unix_listener replicator-doveadm {
     mode = 0600
     user = vmail
   }
}
ssl = required
ssl_cert = </etc/letsencrypt/live/myserv.local/fullchain.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.1
userdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
protocol lmtp {
   mail_plugins = " quota fts fts_solr notify replication sieve"
}
protocol !indexer-worker {
   mail_vsize_bg_after_count = 100
}
protocol lda {
   mail_plugins = " quota fts fts_solr notify replication sieve"
}
protocol imap {
   mail_max_userip_connections = 20
   mail_plugins = " quota fts fts_solr notify replication imap_quota 
imap_sieve"
}
protocol sieve {
   mail_max_userip_connections = 20
   managesieve_max_line_length = 64 k
}
protocol pop3 {
   mail_max_userip_connections = 20
   mail_plugins = " quota fts fts_solr notify replication quota"
}


More information about the dovecot mailing list