Panic: file ostream-zlib.c

Bouke J. Henstra | ICT Diensten bouke at ict-diensten.com
Mon May 24 01:59:58 EEST 2021


Hello,


At the moment I am investigating an issue (probably) related to Dovecot 
/zlib. I am hoping someone is willing to help. Thanks.

#Background information

Every time a certain user checked her e-mail the following errors would 
appear in "/var/log/mail.err" (please find the lines below).

I am using zlib (please find the details in the configuration below).

I did include the Dovecot version, OS details, CPU details and file 
system details in this message.

I did migrate the whole mail domain to Microsoft 365 (as the user has an 
active subscription and had to move on - for me this was the fastest 
method to help the user in this case).

The mailbox still exists on the server. I suspect there's file 
corruption somewhere? I am routing mail from the domain to 
xxxxx-xx.mail.protection.outlook.com (just to be sure that the user 
doesn't miss anything - mx records have been updated).

I did notice that the user had issues with receiving mail. Outlook would 
keep trying to fetch mail and was hard to close (user had to kill 
Outlook through the task manager - after migrating to Microsoft 365 this 
problem is resolved too).

I would like to find out what causes/caused this problem. I would like 
to understand the problem and would like to try to avoid future 
problems.

I did run "dovecot-sysreport" but I did notice the data is not 
anonymized. I can anonymize the details and submit those if required.


#Dovcecot version

  root at s1:/# dovecot --version
   2.3.4.1 (f79e8e7e4)

#Operating system

  root at s1:/# uname -a
   Linux s1 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 
GNU/Linux

  root at s1:/# cat /etc/debian_version
   10.9

#CPU Architecture

  root at s1:/# lscpu
   Architecture:        x86_64
   CPU op-mode(s):      32-bit, 64-bit
   Byte Order:          Little Endian

#File System

  ext4 
errors=continue,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 
1

#Errors

May 17 22:37:11 s1 dovecot: 
imap(xxxx at xxxxx.xx)<18570><MxyEjIzCs8pSoYVo>: Panic: file 
ostream-zlib.c: line 37 (o_stream_zlib_close): assertion failed: 
(zstream->ostream.finished || zstream->ostream.ostream.stream_errno != 0 
|| zstream->ostream.error_handling_disabled)

May 17 22:37:11 s1 dovecot: 
imap(xxxx at xxxxx.xx)<18570><MxyEjIzCs8pSoYVo>: Error: Raw backtrace: 
/usr/lib/dovecot/libdovecot.so.0(+0xdb73b) [0x7f45c109973b] -> 
/usr/lib/dovecot/libdovecot.so.0(+0xdb7d1) [0x7f45c10997d1] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x4a199) [0x7f45c1008199] -> 
/usr/lib/dovecot/modules/lib20_zlib_plugin.so(+0x3c6f) [0x7f45c0dc3c6f] 
-> /usr/lib/dovecot/libdovecot.so.0(+0xffd5e) [0x7f45c10bdd5e] -> 
/usr/lib/dovecot/libdovecot.so.0(o_stream_destroy+0x16) [0x7f45c10bdd86] 
-> /usr/lib/dovecot/libdovecot-storage.so.0(maildir_save_finish+0x18d) 
[0x7f45c11d046d] -> 
/usr/lib/dovecot/libdovecot-storage.so.0(mailbox_save_cancel+0x4d) 
[0x7f45c11a867d] -> dovecot/imap(+0x10f36) [0x5606b3187f36] -> 
dovecot/imap(+0x10ff3) [0x5606b3187ff3] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x6f) [0x7f45c10afbef] 
-> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0x136) 
[0x7f45c10b11e6] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x4c) 
[0x7f45c10afc8c] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x40) 
[0x7f45c10afdf0] -> 
/usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) 
[0x7f45c1030123] -> dovecot/imap(main+0x325) [0x5606b3187bf5] -> 
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7f45c0e1309b] 
-> dovecot/imap(_start+0x2a) [0x5606b3187d8a]

May 17 22:37:11 s1 dovecot: 
imap(xxxx at xxxxx.xx)<18570><MxyEjIzCs8pSoYVo>: Fatal: master: 
service(imap): child 18570 killed with signal 6 (core dumps disabled - 
https://dovecot.org/bugreport.html#coredumps)

May 17 22:54:52 s1 dovecot: 
imap(xxxx at xxxxx.xx)<20321><HrbpyozCn8tSoYVo>: Panic: file 
ostream-zlib.c: line 37 (o_stream_zlib_close): assertion failed: 
(zstream->ostream.finished || zstream->ostream.ostream.stream_errno != 0 
|| zstream->ostream.error_handling_disabled)

May 17 22:54:52 s1 dovecot: 
imap(xxxx at xxxxx.xx)<20321><HrbpyozCn8tSoYVo>: Error: Raw backtrace: 
/usr/lib/dovecot/libdovecot.so.0(+0xdb73b) [0x7fda4a55473b] -> 
/usr/lib/dovecot/libdovecot.so.0(+0xdb7d1) [0x7fda4a5547d1] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x4a199) [0x7fda4a4c3199] -> 
/usr/lib/dovecot/modules/lib20_zlib_plugin.so(+0x3c6f) [0x7fda4a27ec6f] 
-> /usr/lib/dovecot/libdovecot.so.0(+0xffd5e) [0x7fda4a578d5e] -> 
/usr/lib/dovecot/libdovecot.so.0(o_stream_destroy+0x16) [0x7fda4a578d86] 
-> /usr/lib/dovecot/libdovecot-storage.so.0(maildir_save_finish+0x18d) 
[0x7fda4a68b46d] -> 
/usr/lib/dovecot/libdovecot-storage.so.0(mailbox_save_cancel+0x4d) 
[0x7fda4a66367d] -> dovecot/imap(+0x10f36) [0x5559c9e82f36] -> 
dovecot/imap(+0x10ff3) [0x5559c9e82ff3] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x6f) [0x7fda4a56abef] 
-> /usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run_internal+0x136) 
[0x7fda4a56c1e6] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x4c) 
[0x7fda4a56ac8c] -> /usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x40) 
[0x7fda4a56adf0] -> 
/usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) 
[0x7fda4a4eb123] -> dovecot/imap(main+0x325) [0x5559c9e82bf5] -> 
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7fda4a2ce09b] 
-> dovecot/imap(_start+0x2a) [0x5559c9e82d8a]

May 17 22:54:52 s1 dovecot: 
imap(xxxx at xxxxx.xx)<20321><HrbpyozCn8tSoYVo>: Fatal: master: 
service(imap): child 20321 killed with signal 6 (core dumps disabled - 
https://dovecot.org/bugreport.html#coredumps)

#Config

root at s1:/opt/scripts# dovecot -n
# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 ()
# OS: Linux 4.19.0-16-amd64 x86_64 Debian 10.9
# Hostname: s1.xxxxx.xx
auth_mechanisms = plain login
disable_plaintext_auth = no
imap_capability = +SPECIAL-USE XLIST
listen = *,[::]
lmtp_rcpt_check_quota = yes
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_max_userip_connections = 100
mail_plugins = quota zlib
mail_privileged_group = vmail
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
   driver = sql
}
plugin {
   quota = dict:user::file:/var/vmail/%d/%n/.quotausage
   quota_status_nouser = DUNNO
   quota_status_overquota = 552 5.2.2 Mailbox is full
   quota_status_success = DUNNO
   sieve = /var/vmail/%d/%n/.sieve
   sieve_after = /var/vmail/%d/%n/.ispconfig.sieve
   sieve_before = /var/vmail/%d/%n/.ispconfig-before.sieve
   sieve_max_actions = 100
   sieve_max_redirects = 25
   sieve_max_script_size = 2M
   zlib_save = gz
   zlib_save_level = 9
}
protocols = imap pop3 lmtp
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-userdb {
     group = vmail
     mode = 0600
     user = vmail
   }
   user = root
}
service imap-login {
   client_limit = 1000
   process_limit = 512
}
service lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0600
     user = postfix
   }
}
service quota-status {
   client_limit = 1
   executable = quota-status -p postfix
   unix_listener /var/spool/postfix/private/quota-status {
     group = postfix
     mode = 0660
     user = postfix
   }
}
service stats {
   unix_listener stats-reader {
     group = vmail
     mode = 0660
     user = vmail
   }
   unix_listener stats-writer {
     group = vmail
     mode = 0660
     user = vmail
   }
}
ssl_cert = </etc/postfix/smtpd.cert
ssl_cipher_list = 
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.2
userdb {
   driver = prefetch
}
userdb {
   args = /etc/dovecot/dovecot-sql.conf
   driver = sql
}
protocol imap {
   auth_verbose = yes
   mail_plugins = quota zlib quota imap_quota
}
protocol pop3 {
   auth_verbose = yes
   mail_plugins = quota zlib quota
   pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
   mail_plugins = quota zlib sieve quota
   postmaster_address = postmaster at xxxxx.xx
}
protocol lmtp {
   mail_plugins = quota zlib quota sieve
   postmaster_address = postmaster at xxxxx.xx


-- 
Kind regards,

Bouke J. Henstra


More information about the dovecot mailing list