One more attempt: stuck processes
Sebastian Hagedorn
Hagedorn at uni-koeln.de
Wed Nov 14 10:15:13 EST 2007
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 at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 186 bytes
Desc: not available
Url : http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20071114/a618aa88/attachment.bin
More information about the Info-cyrus
mailing list