dma(8): Fix race condition in multi-recipient delivery

Daniel Roethlisberger daniel at roe.ch
Thu Jul 9 16:41:12 PDT 2009


Simon 'corecode' Schuber <corecode at fs.ei.tum.de> 2009-07-09:
> Daniel Roethlisberger wrote:
> >When delivering mail to multiple recipients, dma(8) will fork for
> >each recipient and attempt parallel delivery.  Separate delivery
> >processes for multiple recipients of the same message all use the
> >same FILE* on the same file descriptor.  If a process is loosing
> >the CPU during the delivery process, another delivery process for
> >the same message will wreak havoc on the file descriptor.  The
> >symptom is dma(8) logging a failed delivery and bouncing the
> >message for some or all of the recipients:
> >
> >Jul  3 20:57:21 marvin dma[32640]: 15c.284010d0: remote delivery
> >failed:corrupted queue file
> 
> Thanks for your submission!  I've taken a different approach, could you 
> please test whether it works for you?  (Untested patch).
> 
> thanks,
>  simon

This patch doesn't work for me: dma delivers fine to the first
recipient, but fails delivery for all other recipients, logging
an illegal seek to syslog:

Jul 10 01:15:52 marvin dma[45137]: e7.28401130: remote delivery
deferred: cannot seek: Illegal seek

-- 
Daniel Roethlisberger
http://daniel.roe.ch/





More information about the Submit mailing list