One more attempt: stuck processes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Cyrus SASL]     [Squirrel Mail]     [Asterisk PBX]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [KDE]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux