On 21-08-13 10:48, Thomas Raschbacher wrote: > Hi. > > I just had a problem as well where dbmail-imapd died on me. > Since It is just my server I did take a bit of time to create memory > dumps and core files > > strace showed me this (again and again so some loop): > ... > read(4, 0x1efbca0, 11) = -1 EAGAIN (Resource > temporarily unavailable) > write(13, "Q", 1) = -1 EAGAIN (Resource > temporarily unavailable) > ... > > i checked what fd 13 was and it is some sort of pipe
Correct. DBMail uses a self-pipe to signal the main thread that there are jobs on the queue. http://cr.yp.to/docs/selfpipe.html This mechanism is mainly used by worker threads to tell the main thread they've finished with a workload. It is also used by workers to send data to a client, through the main thread. This is necessary because using libevent, basically we can't do network IO from threads other than the main thread. Finally it is used to re-schedule a call-back if there is pending data for the client, but writing to the client generated a soft-failure. It is I suspect in this last scenario that the loop occurs. I've tried very hard to make it full proof, but I'll add some more guards to prevent this from happening. -- ________________________________________________________________ Paul J Stevens pjstevns @ gmail, twitter, skype, linkedin * Premium Hosting Services and Web Application Consultancy * www.nfg.nl/[email protected]/+31.85.877.99.97 ________________________________________________________________ _______________________________________________ DBmail mailing list [email protected] http://mailman.fastxs.nl/cgi-bin/mailman/listinfo/dbmail
