Hi,I've brought up this topic before. We've been running cyrus-imapd very happily for several years. Yet there's one issue that none of the updates have resolved. The last time I reported it we were running 2.2.12. Now we're running 2.3.8, but the issues is the same: POP and IMAP processes that use TLS/SSL get "stuck". My observations point towards dropped dial-up connections as the cause. Here's an example:
[root@lvr13 root]# strace -p 4998 Process 4998 attached - interrupt to quit read(0, <unfinished ...> Process 4998 detached In gdb: 0x003ed41e in __read_nocancel () from /lib/tls/libc.so.6 (gdb) bt #0 0x003ed41e in __read_nocancel () from /lib/tls/libc.so.6 #1 0x00c422f7 in BIO_new_socket () from /lib/libcrypto.so.4 #2 0x00c402b2 in BIO_read () from /lib/libcrypto.so.4 #3 0x00d26c30 in ssl3_alert_code () from /lib/libssl.so.4 #4 0x00d26dcc in ssl3_alert_code () from /lib/libssl.so.4 #5 0x00d280cf in ssl3_read_bytes () from /lib/libssl.so.4 #6 0x00d28ffc in ssl3_get_message () from /lib/libssl.so.4 #7 0x00d1ecab in ssl3_accept () from /lib/libssl.so.4 #8 0x00d1e944 in ssl3_accept () from /lib/libssl.so.4 #9 0x00d2dc9a in SSL_accept () from /lib/libssl.so.4 #10 0x00d2980d in ssl23_get_client_hello () from /lib/libssl.so.4 #11 0x00d29712 in ssl23_accept () from /lib/libssl.so.4 #12 0x00d2dc9a in SSL_accept () from /lib/libssl.so.4 #13 0x080a0a03 in idle_notify () #14 0x0805ef21 in idle_update () #15 0x08051fc6 in shut_down () #16 0x0804ebe4 in ?? () #17 0x08d53458 in ?? () #18 0x08d61a98 in ?? () #19 0x00000000 in ?? () (gdb)Ultimately all processes get stuck in libc, so this might be a library issue. My problem is that I have no way to confirm that. I've compared that stack trace to the source and I'm confused. idle_notify() is in idle.c, and it's very simple:
/* * Notify idled of a mailbox change */ void idle_notify(struct mailbox *mailbox) { /* We should try to determine if we need to send this * (ie, is an imapd is IDLE on 'mailbox'?). */ idle_send_msg(IDLE_NOTIFY, mailbox); }So why doesn't the stack trace show a call to idle_send_msg()? Shouldn't the SSL routines be called from a procedure that actually does I/O?
Anyway, if there is anybody who has seen something like this I would like to know about it. Also if anyone has a clue how to further debug this, please let me know!
Thanks, Sebastian Hagedorn -- Sebastian Hagedorn - Postmaster - RZKR-R1 (Gebäude 52), Zimmer 18 Zentrum für angewandte Informatik - Universitätsweiter Service RRZK Universität zu Köln / Cologne University - Tel. +49-221-478-5587 Skype: shagedorn
Attachment:
pgpH7XxllPPHl.pgp
Description: PGP signature
---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html