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