Hello All,

I've run across my first case of the tight looping problem in dbmail-imapd today. I am running dbmail 1.1 with Jesse's big patch from a few days back. Here's the appropriate slice of my process table:

USER   PID %CPU %MEM   VSZ  RSS STAT START   TIME COMMAND
root 31160 0.0 0.1 3064 744 S Mar11 0:00 /usr/local/dbmail/bin/dbmail-imapd root 7362 0.0 0.1 3168 864 S Mar11 0:00 \_ /usr/local/dbmail/bin/dbmail-imapd root 7363 0.0 0.2 4576 1848 S Mar11 2:54 \_ /usr/local/dbmail/bin/dbmail-imapd root 7364 0.0 0.3 5920 2392 S Mar11 3:39 \_ /usr/local/dbmail/bin/dbmail-imapd root 7371 0.0 0.3 4696 1976 S Mar11 2:29 \_ /usr/local/dbmail/bin/dbmail-imapd root 10485 76.6 0.3 5640 1920 R Mar18 8468:44 \_ /usr/local/dbmail/bin/dbmail-imapd root 23125 0.2 0.2 5616 1880 R Mar25 4:19 \_ /usr/local/dbmail/bin/dbmail-imapd root 7892 0.0 0.2 4736 1464 S Mar11 0:00 stunnel -d 993 -p ./server.pem -r localhost:imap

(A quick note here, the stunnel command show allows you to provide imaps with dbmail if you so desire.)

I attached strace to 10485, but there was no output, whatever loop it is in, it's not making any system calls. While this CPU eating loop was happening, dbmail-imapd became unresponsive and would block when you tried to retrieve a message, but as soon as that process was killed, it continued to work as normal. When I did kill the process, it was never reaped, it's still sitting <defunct> in my process table, eight hours later.

Here's the last bit of logging from that process:

Mar 20 00:15:09 fork dbmail/imap4d[10485]: PerformChildTask(): incoming connection from [192.168.111.205]
Mar 20 00:15:09 fork dbmail/imap4d[10485]: COMMAND: [1 authenticate login]
Mar 20 00:15:09 fork dbmail/imap4d[10485]: IMAPD [PID 10485]: user (id 1, name blake) login accepted @ 2003-03-20 00:15:09^M
Mar 20 00:15:10 fork dbmail/imap4d[10485]: COMMAND: [2 select "dbmail"]
Mar 20 00:15:10 fork dbmail/imap4d[10485]: COMMAND: [3 UID fetch 1:* (FLAGS)] Mar 20 00:15:11 fork dbmail/imap4d[10485]: COMMAND: [4 UID fetch 12700 (UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (From To Cc Subject Date Message-ID Priority X-Priority References Newsgroups In-Reply-To List-Id Delivered-To X-Spam-Flag)])] Mar 20 00:15:12 fork dbmail/imap4d[10485]: COMMAND: [5 UID fetch 12700 (UID RFC822.SIZE BODY.PEEK[])] Mar 20 00:15:13 fork dbmail/imap4d[10485]: COMMAND: [6 uid store 12700 +Flags (\Seen)] Mar 20 01:21:54 fork dbmail/imap4d[10485]: ChildSighandler(): got signal [14]

Not much info I admit, but it's all I have. Perhaps there was some problem with the SIGALARM (14) handler being called an an inopportune time. I'm going to set up dbmail-imapd so that I can get it to dump core. Then if this happens again I'll have more to go on.

Here's my system info for completeness: Debian 3.0 GNU/Linux kernel 2.4.18 on a Sun Ultra 1 with MySQL 3.23.49-8.2 InnoDB.

Hope this helps,
Blake

Reply via email to