[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: scheduler: unlink... No such file or directory
On 21-Aug-00 at 16:24, Matti Aarnio (mea@nic.funet.fi) wrote:
> > While evaluating new x86 rackmount boxes I installed Zmailer on one
> > (running Solars7 x86) and piped full mail feed there. There are
> > still things that I reported before but diagniostics is somewhat
> > different:
> >
> > scheduler: unlink(../queue/F/wV DDST)[sch-unctl-2]: No such file or
> > directory scheduler: unlink(../queue/V/X?DDST)[sch-unctl-2]: No such
> > file or directory
>
> These are - shall we say - absolute nonsense.
>
> At scheduler/update.c: unctlfile() function:
>
> if (cfp->dirind > 0)
> sprintf(path, "../%s/%s/%s",
> QUEUEDIR, cfpdirname(cfp->dirind), cfp->mid);
> else
> sprintf(path, "../%s/%s",
> QUEUEDIR, cfp->mid);
>
> eunlink(path,"sch-unctl-2");
>
> With lib/esyslib.c: eunlink() reporting the 'tag' value in
> sensible way (that is, a valid tag) I am inclined to consider
> that the esyslib.c and update.c were both compiled before
> linkage. Therefore the eunlink() was corrent binary and
> produced correct result, but the 'path' content is there bogus.
What I can tell for sure that in this particular case it was clean
first compile from the source.
> Bogus 'path' means that cfp->mid pointed string is bogus.
>
> Also, the eunlink() is called only if 'no_unlink' is
> zero, which means at one place at scheduler/scheduler.c,
> and one place at scheduler/update.c: unctlfile(). Just which...
>
> At update.c the unctlfile() is called twice from update.c: deletemsg()
> (highly unlikely), and once from vtxupdate(), which means updates from
> any and all message statuses.
>
> All paths that I seem to be able to pick do feel to be ok.
> As if the message file has corrupted without a valid "MID" value.
>
> On the other hand, a NULL pointer referral of cfp->mid should cause
> a crash when printing that 'path' content...
Could just the memory where MID pointer is poiting be overwritten, or,
say, freed and reallocated by mistake?
Eugene