On 2013-08-21 12:03, Paul J Stevens wrote:
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.

ok i thought it was probably something thread related. thanks for the explaination. let me know if you need me to poke at the coredump or memory dumps. I will keep them for now ;)

_______________________________________________
DBmail mailing list
[email protected]
http://mailman.fastxs.nl/cgi-bin/mailman/listinfo/dbmail

Reply via email to