dovecot: lmtp: Error: fatal error: failed to reserve page summary memory

1k Views Asked by At

after updating from ubuntu 18 to 20 started getting this on running golang binary from sieve rules file

Sep 17 08:54:00 mailserver spamd[3231]: spamd: connection from ::1 [::1]:57844 to port 783, fd 5
Sep 17 08:54:00 mailserver spamd[3231]: spamd: setuid to Debian-exim succeeded
Sep 17 08:54:00 mailserver spamd[3231]: spamd: processing message <CANcP0tbws-r=L8KrTug_NKLk0EuPwo1vKotdpV=Pf95Pxusbww@mail.gmail.com> for Debian-exim:114
Sep 17 08:54:00 mailserver systemd-resolved[527]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
Sep 17 08:54:00 mailserver systemd-resolved[527]: message repeated 8 times: [ Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.]
Sep 17 08:54:00 mailserver spamd[3231]: spamd: clean message (1.1/5.0) for Debian-exim:114 in 0.3 seconds, 2760 bytes.
Sep 17 08:54:00 mailserver spamd[3231]: spamd: result: . 1 - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RDNS_NONE,SPF_HELO_NONE,SPF_PASS scantime=0.3,size=2760,user=Debian-exim,uid=114,required_score=5.0,rhost=::1,raddr=::1,rport=57844,mid=<CANcP0tbws-r=L8KrTug_NKLk0EuPwo1vKotdpV=Pf95Pxusbww@mail.gmail.com>,autolearn=no autolearn_force=no
Sep 17 08:54:00 mailserver dovecot: lmtp(4254): Connect from local
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: fatal error: failed to reserve page summary memory
Sep 17 08:54:00 mailserver dovecot: lmtp: Error:
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime stack:
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime.throw(0x1a48db5, 0x25)
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: #011/usr/local/go/src/runtime/panic.go:1116 +0x72 fp=0x7ffe160d5860 sp=0x7ffe160d5830 pc=0x4ce5d2
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime.(*pageAlloc).sysInit(0x232c268)
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: #011/usr/local/go/src/runtime/mpagealloc_64bit.go:80 +0x185 fp=0x7ffe160d58f0 sp=0x7ffe160d5860 pc=0x4c4e25
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime.(*pageAlloc).init(0x232c268, 0x232c260, 0x25cb8d8)
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: #011/usr/local/go/src/runtime/mpagealloc.go:317 +0x75 fp=0x7ffe160d5918 sp=0x7ffe160d58f0 pc=0x4c2815
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime.(*mheap).init(0x232c260)
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: #011/usr/local/go/src/runtime/mheap.go:743 +0x24b fp=0x7ffe160d5940 sp=0x7ffe160d5918 pc=0x4bf84b
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime.mallocinit()
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: #011/usr/local/go/src/runtime/malloc.go:480 +0x109 fp=0x7ffe160d5968 sp=0x7ffe160d5940 pc=0x4a4c49
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime.schedinit()
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: #011/usr/local/go/src/runtime/proc.go:563 +0x65 fp=0x7ffe160d59c0 sp=0x7ffe160d5968 pc=0x4d1f25
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: runtime.rt0_go(0x7ffe160d5ad8, 0x2, 0x7ffe160d5ad8, 0x1813580, 0x7fd3cc8a80b3, 0x7fd3cca6cb80, 0x7ffe160d5ad8, 0x200011c00, 0x501080, 0x1813580, ...)
Sep 17 08:54:00 mailserver dovecot: lmtp: Error: #011/usr/local/go/src/runtime/asm_amd64.s:214 +0x125 fp=0x7ffe160d59c8 sp=0x7ffe160d59c0 pc=0x5011c5
Sep 17 08:54:00 mailserver dovecot: lmtp(roman)<4254></X0wOCgkY1+eEAAAgcArzw>: program exec:/usr/lib/dovecot/sieve-execute/smtp (4255): Terminated with non-zero exit code 2
Sep 17 08:54:00 mailserver dovecot: lmtp(roman)<4254></X0wOCgkY1+eEAAAgcArzw>: sieve: msgid=<CANcP0tbws-r=L8KrTug_NKLk0EuPwo1vKotdpV=Pf95Pxusbww@mail.gmail.com>: stored mail into mailbox 'Unsubscribe.Neighbors'
Sep 17 08:54:00 mailserver dovecot: lmtp(4254): Disconnect from local: Client has quit the connection (state=READY)
Sep 17 08:55:01 mailserver CRON[4257]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

here is sieve rules:

require ["variables", "fileinto", "mailbox", "vnd.dovecot.execute"];
if address :matches "from" "*" { set "from" "${1}"; }

if anyof ( header :contains "subject" "unsubscribe neighbours",
                header :contains "subject" "unsubscribe neighbors") {
  execute "smtp" "-neighbors=${from}";
  fileinto :create "Unsubscribe.Neighbors";
} elsif address :contains "from" ["mailer-daemon", "postmaster", "internet mail delivery"] {
  if header :matches "X-Failed-Recipients" "*" {
    execute "smtp" "-email=${1}";
    fileinto :create "Mail Delivery System";
  } else {
    fileinto :create "Mail Delivery System.Warning";
  }
} else {
  # The rest goes into INBOX
  # default is "implicit keep", we do it explicitly here
  keep;
}

Attempted in /etc/dovecot/conf.d/90-sieve.conf vsz_limit = 256M with no luck

Can somebody help me in fixing it?

2

There are 2 best solutions below

0
On BEST ANSWER

For anyone who might stumble upon the same issue: It seems this is caused by a change in memory allocator code in Golang 1.14 and higher - see Go issue. I have been able to circumvent it by setting vsz_limit of lmtp process to 768MB.

0
On

Finally just rewrote go to rust :( and everything works.