[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Code questions...



> On Sat, 4 Feb 1995, Lai Yiu Fai wrote:
> > >   - I discovered that my scheduler zombie problem is related to the fact
> > > that a process is forked to handle mailq requests, but there isn't a
> > > designated wait call for it, it seems like it gets reaped purely by chance
> > > by waitandclose() (transport.c) whenever readfrom() is called.   Also,
> > > ipcpause()  (transport.c) doesn't appear to ever be called...  why?
> > 
> > I have the same problem since 2.99.9, I simply add a designated wait() call
> > in parent process after forking the mailq handler.  It seems that the problem
> > is solved.
> 
>    I think it would be dangerous to just drop a wait() call after calling 
> dumpq().  What would happen if a transport agent terminated before 
> dumpq()?  Wouldn't you lose that agent's output (readfrom() didn't get 
> called), and wouldn't the scheduler's internal state be inconsistent?

	Yes, and therefore  2.99.11 DOES process SIGCHLD/SIGCLD when
	such arrives.  So far the code has stead-fastly IGNORED the
	child-death indications, and only wait()ed childs when it
	has happened to come up to that one routine..

	Now verified on Solaris and OSF1/1v3.0, next  SunOS 4.x..

> Tom

	/Matti Aarnio