segfault when using zlib module with glibc 2.22
Hi,
I'm seeing the following segfault when I run doveadm search mailbox inbox
with the zlib module enabled with dovecot 2.18 and glibc
2.22 on Arch Linux. It does not happen with glibc 2.21.
I've noticed that when I remove "zlib" from the mail_plugins line at the beginning of the config file the segfault goes away. I've also tested hg tip and the problem does not appear to be fixed yet.
The segfault also happens with other commands like doveadm purge
.
Do you need any more information to reproduce and fix this?
Florian
backtrace:
0x00007ffff5eaf1e0 in pthread_mutex_unlock () from /usr/lib/libpthread.so.0 #0 0x00007ffff5eaf1e0 in pthread_mutex_unlock () from /usr/lib/libpthread.so.0 #1 0x00007ffff7def753 in _dl_close_worker () from /lib64/ld-linux-x86-64.so.2 #2 0x00007ffff7defede in _dl_close () from /lib64/ld-linux-x86-64.so.2 #3 0x00007ffff7dea124 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 #4 0x00007ffff6d235e1 in ?? () from /usr/lib/libdl.so.2 #5 0x00007ffff6d230bf in dlclose () from /usr/lib/libdl.so.2 #6 0x00007ffff739326a in module_free (module=0x69da20) at module-dir.c:67 #7 0x00007ffff7394882 in module_dir_unload (modules=0x68b680
) at module-dir.c:593 #8 0x00007ffff765376b in mail_storage_service_deinit (_ctx=0x6a05d0) at mail-storage-service.c:1475 #9 0x0000000000425ac2 in doveadm_mail_cmd (cmd=0x69f780, argc=3, argv=0x6943a0) at doveadm-mail.c:631 #10 0x0000000000425dcb in doveadm_mail_try_run (cmd_name=0x6943c9 "search", argc=3, argv=0x694398) at doveadm-mail.c:711 #11 0x0000000000433e1f in main (argc=3, argv=0x694398) at doveadm.c:346
dovecot.conf:
# 2.0.0: dovecot.conf.orig # OS: Linux 2.6.35-ARCH x86_64 Arch Linux auth_mechanisms = plain login disable_plaintext_auth = yes mail_location = mdbox:~/.mdbox mdbox_rotate_size = 10m mail_plugins = $mail_plugins zlib notify mail_log
# enable imap notify mailbox_list_index=yes
# remove domain part from username and lowercase it # needed for lmtp delivery to system users auth_username_format = %Ln
namespace inbox { hidden = no inbox = yes list = yes location = prefix = separator = . type = private mailbox Trash { auto = subscribe special_use = \Trash } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Sent { auto = subscribe # autocreate, autosubscribe special_use = \Sent } mailbox Junk { auto = subscribe special_use = \Junk } }
passdb { driver = pam } plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/.sieve sieve_global_dir = /etc/dovecot/sieve/global/ sieve_global_path = /etc/dovecot/sieve/default.sieve
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size
} protocols = imap pop3 sieve lmtp service auth { unix_listener auth-client { group = postfix mode = 0660 user = postfix } user = root } service imap-login { process_limit = 400 process_min_avail = 5 #executable = imap-login -D #chroot = }
service managesieve-login { inet_listener sieve { #port = 4190 } inet_listener sieve-obsolete { port = 2000 } } service managesieve { } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0660 user = postfix } }
#service imap { # executable = imap postlogin #} # #service postlogin { # executable = script-login -d rawlog # unix_listener postlogin { # } #}
login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k" imap_id_log = *
ssl_cert =
ssl_protocols = !SSLv2 !SSLv3 ssl_options = no_compression
#ssl_cipher_list = DHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-ECDSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-ECDSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES256-SHA256:DHE-ECDSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ALL:!LOW:!SSLv2:!EXP:!aNULL ssl_cipher_list = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
#ssl_dh_parameters_length = 4096
userdb { driver = passwd } protocol imap { imap_client_workarounds = tb-extra-mailbox-sep mail_max_userip_connections = 30 mail_plugins = $mail_plugins imap_zlib } protocol lda { mail_plugins = $mail_plugins sieve postmaster_address = postmaster@server-speed.net } protocol lmtp { postmaster_address = postmaster@server-speed.net mail_plugins = $mail_plugins sieve } protocol sieve { managesieve_logout_format = bytes ( in=%i : out=%o ) } plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/.sieve zlib_save_level = 6 zlib_save = gz #acl = vfile } #plugin { #fts = lucene ## Lucene-specific settings, good ones are: #fts_lucene = whitespace_chars=@. #fts_autoindex=yes #}
auth_failure_delay = 2
On 20 Aug 2015, at 01:37, Florian Pritz bluewind@xinu.at wrote:
Hi,
I'm seeing the following segfault when I run
doveadm search mailbox inbox
with the zlib module enabled with dovecot 2.18 and glibc 2.22 on Arch Linux. It does not happen with glibc 2.21.I've noticed that when I remove "zlib" from the mail_plugins line at the beginning of the config file the segfault goes away. I've also tested hg tip and the problem does not appear to be fixed yet.
The segfault also happens with other commands like
doveadm purge
.Do you need any more information to reproduce and fix this?
If it only happens with Arch Linux with an updated glibc version, I doubt the problem is with Dovecot's code.
0x00007ffff5eaf1e0 in pthread_mutex_unlock () from /usr/lib/libpthread.so.0 #0 0x00007ffff5eaf1e0 in pthread_mutex_unlock () from /usr/lib/libpthread.so.0 #1 0x00007ffff7def753 in _dl_close_worker () from /lib64/ld-linux-x86-64.so.2 #2 0x00007ffff7defede in _dl_close () from /lib64/ld-linux-x86-64.so.2 #3 0x00007ffff7dea124 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 #4 0x00007ffff6d235e1 in ?? () from /usr/lib/libdl.so.2 #5 0x00007ffff6d230bf in dlclose () from /usr/lib/libdl.so.2 #6 0x00007ffff739326a in module_free (module=0x69da20) at module-dir.c:67
Looks very much like a non-Dovecot bug.
You could verify by running with valgrind, ideally with glibc debuginfo packages installed. It'll likely point to glibc cod.
Hi,
On Mon, 24 Aug 2015 19:18:41 +0300 Timo Sirainen tss@iki.fi wrote:
If it only happens with Arch Linux with an updated glibc version, I doubt the problem is with Dovecot's code.
It's indeed a glibc issue and it appears upstream already has a fix and that fix has been merged into Arch Linux' glibc 2.22-3 package. Thanks for the pointer.
Florian
participants (2)
-
Florian Pritz
-
Timo Sirainen